From 6e8ce001ab8e32d0a66c7fab9f1c8f2d9f1bad69 Mon Sep 17 00:00:00 2001 From: Pesara Amarasekera Date: Thu, 12 May 2022 11:33:27 -0400 Subject: [PATCH 1/8] corrected a spelling mistake --- TTdiag.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TTdiag.m b/TTdiag.m index 10c27e6..f0e1998 100644 --- a/TTdiag.m +++ b/TTdiag.m @@ -54,7 +54,7 @@ switch Action, end if ~data.valid errordlg(... - DAStudio.message('Block Data has been corputed'),... + DAStudio.message('Block Data has been corrupted'),... 'Error', 'modal'); return end -- GitLab From 3f5a61d68cf25346da2ee28831e484ce2e2debce Mon Sep 17 00:00:00 2001 From: Pesara Amarasekera Date: Tue, 17 May 2022 14:42:32 -0400 Subject: [PATCH 2/8] Started getting outputs from debugging --- +TableBlock/delete_recursive.m | 25 + +TableBlock/set_block_display.m | 34 + +TableBlock/set_code.m | 196 + @CVC_checker/CVC_checker.m | 36 + @CVC_checker/cvc_check.m | 99 + @CVC_checker/cvc_parse_result.m | 7 + @CVC_checker/find_parents.m | 47 + @CVC_checker/generate_cvc_grid.m | 82 + @CVC_checker/generate_file.m | 59 + .../matlab_to_cvc_syntax_translation.m | 38 + @CVC_checker/pvs_to_cvc_subtypes.m | 54 + @Cell/Cell.m | 43 + @Cell/cal_height.m | 27 + @Cell/delete_Cell.m | 29 + @Cell/flag_cell.m | 22 + @Cell/get_pos.m | 15 + @Cell/new_Grid.m | 19 + @Cell/pb_call.m | 37 + @Cell/purge.m | 19 + @Cell/set_pb.m | 23 + @Cell/set_pos.m | 17 + @Cell/upgrade.m | 18 + @Data/Data.m | 38 + @Data/clone.m | 42 + @Data/copy_results.m | 21 + @Data/getData.m | 23 + @Data/init.m | 20 + @Data/purge.m | 16 + @Data/save.m | 12 + @Data/setData.m | 24 + @Data/setvalues.m | 13 + @Data/upgrade.m | 15 + @Data/valid.m | 25 + @EMLGenerator/EMLGenerator.m | 42 + @EMLGenerator/generate_eml_code.m | 18 + @EMLGenerator/generate_eml_cond.m | 101 + @EMLGenerator/generate_eml_horizontal.m | 54 + @EMLGenerator/generate_eml_multi.m | 52 + @EMLGenerator/generate_preamble.m | 124 + @EMLGenerator/parse_inputs.m | 53 + @EMLGenerator/set_datatype.m | 13 + @EMLGenerator/type_convert.m | 32 + @GUI/GUI.m | 99 + @GUI/about_call.m | 11 + @GUI/check_call.m | 37 + @GUI/check_grid_condition.m | 68 + @GUI/check_grid_result.m | 41 + @GUI/check_inputs.m | 23 + @GUI/check_matlab_syntax_condition.m | 64 + @GUI/check_output_consistent.m | 41 + @GUI/close_fig.m | 31 + @GUI/compiled_types.m | 31 + @GUI/create_std_text.m | 28 + @GUI/cvc_ext_call.m | 39 + @GUI/draw_allgrids.m | 17 + @GUI/draw_grid0.m | 38 + @GUI/draw_grid1.m | 88 + @GUI/draw_grid2.m | 166 + @GUI/edit_tog_call.m | 23 + @GUI/evaluate_counter.m | 19 + @GUI/evaluate_counter_grid.m | 97 + @GUI/help_call.m | 12 + @GUI/init.m | 222 + @GUI/input_call.m | 23 + @GUI/input_data_type.m | 38 + @GUI/msgbox_scroll.m | 28 + @GUI/multi_select_call.m | 21 + @GUI/new_call.m | 16 + @GUI/open_call.m | 18 + @GUI/output_data_type.m | 41 + @GUI/prf_file_call.m | 67 + @GUI/prover_select_call.m | 11 + @GUI/pvs_ext_call.m | 51 + @GUI/pvs_ext_call_sim.m | 58 + @GUI/pvs_file_call.m | 18 + @GUI/redo_call.m | 48 + @GUI/reset_wh.m | 16 + @GUI/resize_fig.m | 19 + @GUI/save_call.m | 73 + @GUI/save_conditions.m | 23 + @GUI/save_data.m | 30 + @GUI/save_ext_call.m | 36 + @GUI/save_results.m | 16 + @GUI/save_settings.m | 18 + @GUI/setData.m | 23 + @GUI/setPBenable.m | 24 + @GUI/set_command_pos.m | 30 + @GUI/set_grid.m | 18 + @GUI/settings_call.m | 15 + @GUI/textbox_callback.m | 59 + @GUI/typecheck_call.m | 14 + @GUI/undo_call.m | 71 + @GUI/update_Statusbar.m | 28 + @GUI/update_multi_check_status.m | 22 + @GUI/update_prover_check_status.m | 22 + @GUI/update_undoredo.m | 29 + @Grid/Grid.m | 35 + @Grid/clone.m | 27 + @Grid/deep_delete.m | 25 + @Grid/delete_Cell.m | 23 + @Grid/max_width.m | 25 + @Grid/new_Cell.m | 18 + @Grid/pb_delete_call.m | 85 + @Grid/pb_new_call.m | 38 + @Grid/purge.m | 21 + @Grid/set_delete_pb.m | 22 + @Grid/set_heights.m | 21 + @Grid/set_pb.m | 22 + @Grid/set_rGrid.m | 13 + @Grid/set_widths.m | 22 + @Grid/upgrade.m | 16 + @PVS_checker/PVS_checker.m | 61 + @PVS_checker/check_status.m | 30 + @PVS_checker/generate_eml_multi.m | 50 + @PVS_checker/generate_pvs.m | 100 + @PVS_checker/generate_pvs_file.m | 152 + @PVS_checker/generate_pvs_horizontal.m | 60 + @PVS_checker/generate_pvs_multi_output.m | 58 + @PVS_checker/generate_pvs_script.m | 22 + @PVS_checker/generate_pvs_status_script.m | 19 + @PVS_checker/get_pvs_version.m | 14 + .../matlab_to_pvs_syntax_translation.m | 32 + @PVS_checker/matlab_type_to_pvs_type.m | 31 + @PVS_checker/parse_decl_id.m | 50 + @PVS_checker/parse_id.m | 144 + @PVS_checker/parse_paren.m | 32 + @PVS_checker/parse_prf_file.m | 39 + @PVS_checker/parse_pvs_result.m | 52 + @PVS_checker/parse_status.m | 18 + @PVS_checker/pvs_check.m | 99 + @PVS_checker/pvs_check_for_imports.m | 82 + @PVS_checker/pvs_check_for_imports_g.m | 62 + @PVS_checker/replace_types_sim.m | 10 + @PVS_checker/user_imports.m | 20 + @RCell/RCell.m | 32 + @RCell/flag_cell.m | 29 + @RCell/purge.m | 13 + @RCell/upgrade.m | 14 + @RGrid/RGrid.m | 29 + @RGrid/delete_g1s.asv | 34 + @RGrid/delete_g1s.m | 35 + @RGrid/delete_g2s.m | 27 + @RGrid/new_RCell.m | 17 + @RGrid/purge.m | 16 + @RGrid/refresh.m | 13 + @RGrid/search.m | 20 + @RGrid/search_return.m | 21 + @RGrid/setup.m | 31 + @RGrid/upgrade.m | 14 + @TTSettings/TTSettings.m | 49 + @TTSettings/apply_call.m | 15 + @TTSettings/cancel_call.m | 13 + @TTSettings/close_fig.m | 16 + @TTSettings/elipse_call.m | 30 + @TTSettings/init.m | 16 + @TTSettings/ok_call.m | 17 + @TTSettings/save.m | 38 + @TTSettings/setvalues.m | 20 + @TTSettings/show.m | 159 + @UndoManager/UndoManager.m | 26 + @UndoManager/new_state.m | 45 + @UndoManager/redo.m | 23 + @UndoManager/search_replace.m | 30 + @UndoManager/shift_queue_left.m | 28 + @UndoManager/shift_queue_right.m | 27 + @UndoManager/undo.m | 20 + @ValidationReport/ValidationReport.m | 59 + @ValidationReport/close_req_call.m | 20 + @ValidationReport/init.m | 129 + @ValidationReport/pb_next_call.m | 21 + @ValidationReport/pb_open_call.m | 16 + @ValidationReport/pb_prev_call.m | 22 + @ValidationReport/populate.m | 60 + @ValidationReport/position.m | 24 + @ValidationReport/set_mode.m | 10 + @ValidationReport/set_results.m | 12 + Examples/Jin_Parnas_Example.mdl | 1807 ++++++ Examples/Jin_Parnas_Example.mdl.r2010a | 1243 ++++ Examples/PowerCond.mdl | 1336 +++++ Examples/ReadabilityExample.mdl | 4880 +++++++++++++++ Examples/ReadabilityExample.mdl.r2010a | 1216 ++++ Examples/Simulink_type_example.mdl | 1563 +++++ Examples/Simulink_type_example.mdl.r2010a | 1147 ++++ Examples/quadratic_roots.mdl | 2866 +++++++++ Examples/quadratic_roots.mdl.r2010a | 2422 ++++++++ Examples/unprovable.mdl | 5254 +++++++++++++++++ Examples/unprovable.mdl.r2010a | 1208 ++++ PVS_theories/double.pvs | 10 + PVS_theories/fp_lemmas.prf | 870 +++ PVS_theories/fp_lemmas.pvs | 39 + PVS_theories/matlab_types.pvs | 14 + PVS_theories/overload.prf | 93 + PVS_theories/overload.pvs | 60 + PVS_theories/single.pvs | 11 + README.txt | 22 + TTdiag.m | 164 + TableLibrary.mdl | 679 +++ TableToolMatlab.m | 9 + Tests/Untitled.m | 7 + Tests/testData.m | 45 + Tests/testEMLGenerator.m | 105 + Tests/testGUI.m | 2 + check_system.m | 29 + demo_table.cvc | 13 + html/TT_gs_over.m | 126 + html/TT_gs_ref.m | 22 + html/TT_gs_req.m | 28 + html/TT_gs_top.m | 6 + html/TT_help.m | 8 + html/TT_ug.m | 9 + html/TT_ug_background.m | 4 + html/TT_ug_checking.m | 189 + html/TT_ug_editing.m | 115 + html/TT_ug_floating.m | 37 + html/TT_ug_opening.m | 17 + html/TT_ug_saving.m | 30 + html/TT_ug_settings.m | 0 html/generation_doc.m | 12 + html/helptoc.xml | 48 + html/helptoc_template.xml | 45 + html/html/TT_gs_over.html | 227 + html/html/TT_gs_ref.html | 94 + html/html/TT_gs_req.html | 100 + html/html/TT_gs_top.html | 78 + html/html/TT_help.html | 80 + html/html/TT_ug.html | 80 + html/html/TT_ug_background.html | 76 + html/html/TT_ug_checking.html | 260 + html/html/TT_ug_editing.html | 186 + html/html/TT_ug_floating.html | 108 + html/html/TT_ug_opening.html | 88 + html/html/TT_ug_saving.html | 101 + html/html/TT_ug_settings.html | 72 + html/html/ug_check_1.png | Bin 0 -> 50891 bytes html/html/ug_check_10.png | Bin 0 -> 51221 bytes html/html/ug_check_2.png | Bin 0 -> 34220 bytes html/html/ug_check_3.png | Bin 0 -> 16524 bytes html/html/ug_check_4.png | Bin 0 -> 44781 bytes html/html/ug_check_5.png | Bin 0 -> 47478 bytes html/html/ug_check_6.png | Bin 0 -> 57603 bytes html/html/ug_check_7.png | Bin 0 -> 57681 bytes html/html/ug_check_8.png | Bin 0 -> 61548 bytes html/html/ug_check_9.png | Bin 0 -> 69611 bytes html/html/ug_layout_1.png | Bin 0 -> 47015 bytes html/html/ug_layout_2.png | Bin 0 -> 74249 bytes html/html/ug_layout_3.png | Bin 0 -> 52582 bytes html/html/ug_layout_4.png | Bin 0 -> 47994 bytes html/html/ug_layout_5.png | Bin 0 -> 68293 bytes html/html/ug_layout_6.png | Bin 0 -> 105765 bytes html/html/ug_layout_7.png | Bin 0 -> 60220 bytes html/html/ug_save_1.png | Bin 0 -> 23399 bytes html/html/walk1.png | Bin 0 -> 71815 bytes html/html/walk2.png | Bin 0 -> 20602 bytes html/html/walk3.png | Bin 0 -> 50707 bytes html/html/walk4.png | Bin 0 -> 76424 bytes html/html/walk5.png | Bin 0 -> 18771 bytes html/html/walk6.png | Bin 0 -> 62356 bytes html/html/walk7.png | Bin 0 -> 16536 bytes html/html/walk8.png | Bin 0 -> 67806 bytes html/html/walk8_old.png | Bin 0 -> 67806 bytes html/html/walk8_p1.png | Bin 0 -> 57653 bytes html/html/walk8_p2.png | Bin 0 -> 44139 bytes html/html/walk9.png | Bin 0 -> 71960 bytes html/html/walk9_p1.png | Bin 0 -> 57734 bytes html/html/walk9_p2.png | Bin 0 -> 46788 bytes info.xml | 29 + safe_execute_external_command.m | 36 + slblocks.m | 89 + slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l | Bin 0 -> 14720 bytes slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.mat | Bin 0 -> 1195 bytes .../EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat | Bin 0 -> 3041 bytes .../precompile/BowI5YMW1AWxfhCwnohcRB.mat | Bin 0 -> 700 bytes .../_sfprj/untitled/_self/sfun/info/binfo.mat | Bin 0 -> 766 bytes slprj/_sfprj/untitled/amsi_serial.mat | Bin 0 -> 227 bytes statusbar.m | 265 + untitled.slx | Bin 0 -> 52402 bytes utilities/unsuppressed_output_directory.m | 43 + utilities/unsuppressed_output_file.m | 74 + 278 files changed, 36739 insertions(+) create mode 100644 +TableBlock/delete_recursive.m create mode 100644 +TableBlock/set_block_display.m create mode 100644 +TableBlock/set_code.m create mode 100644 @CVC_checker/CVC_checker.m create mode 100644 @CVC_checker/cvc_check.m create mode 100644 @CVC_checker/cvc_parse_result.m create mode 100644 @CVC_checker/find_parents.m create mode 100644 @CVC_checker/generate_cvc_grid.m create mode 100644 @CVC_checker/generate_file.m create mode 100644 @CVC_checker/matlab_to_cvc_syntax_translation.m create mode 100644 @CVC_checker/pvs_to_cvc_subtypes.m create mode 100644 @Cell/Cell.m create mode 100644 @Cell/cal_height.m create mode 100644 @Cell/delete_Cell.m create mode 100644 @Cell/flag_cell.m create mode 100644 @Cell/get_pos.m create mode 100644 @Cell/new_Grid.m create mode 100644 @Cell/pb_call.m create mode 100644 @Cell/purge.m create mode 100644 @Cell/set_pb.m create mode 100644 @Cell/set_pos.m create mode 100644 @Cell/upgrade.m create mode 100644 @Data/Data.m create mode 100644 @Data/clone.m create mode 100644 @Data/copy_results.m create mode 100644 @Data/getData.m create mode 100644 @Data/init.m create mode 100644 @Data/purge.m create mode 100644 @Data/save.m create mode 100644 @Data/setData.m create mode 100644 @Data/setvalues.m create mode 100644 @Data/upgrade.m create mode 100644 @Data/valid.m create mode 100644 @EMLGenerator/EMLGenerator.m create mode 100644 @EMLGenerator/generate_eml_code.m create mode 100644 @EMLGenerator/generate_eml_cond.m create mode 100644 @EMLGenerator/generate_eml_horizontal.m create mode 100644 @EMLGenerator/generate_eml_multi.m create mode 100644 @EMLGenerator/generate_preamble.m create mode 100644 @EMLGenerator/parse_inputs.m create mode 100644 @EMLGenerator/set_datatype.m create mode 100644 @EMLGenerator/type_convert.m create mode 100644 @GUI/GUI.m create mode 100644 @GUI/about_call.m create mode 100644 @GUI/check_call.m create mode 100644 @GUI/check_grid_condition.m create mode 100644 @GUI/check_grid_result.m create mode 100644 @GUI/check_inputs.m create mode 100644 @GUI/check_matlab_syntax_condition.m create mode 100644 @GUI/check_output_consistent.m create mode 100644 @GUI/close_fig.m create mode 100644 @GUI/compiled_types.m create mode 100644 @GUI/create_std_text.m create mode 100644 @GUI/cvc_ext_call.m create mode 100644 @GUI/draw_allgrids.m create mode 100644 @GUI/draw_grid0.m create mode 100644 @GUI/draw_grid1.m create mode 100644 @GUI/draw_grid2.m create mode 100644 @GUI/edit_tog_call.m create mode 100644 @GUI/evaluate_counter.m create mode 100644 @GUI/evaluate_counter_grid.m create mode 100644 @GUI/help_call.m create mode 100644 @GUI/init.m create mode 100644 @GUI/input_call.m create mode 100644 @GUI/input_data_type.m create mode 100644 @GUI/msgbox_scroll.m create mode 100644 @GUI/multi_select_call.m create mode 100644 @GUI/new_call.m create mode 100644 @GUI/open_call.m create mode 100644 @GUI/output_data_type.m create mode 100644 @GUI/prf_file_call.m create mode 100644 @GUI/prover_select_call.m create mode 100644 @GUI/pvs_ext_call.m create mode 100644 @GUI/pvs_ext_call_sim.m create mode 100644 @GUI/pvs_file_call.m create mode 100644 @GUI/redo_call.m create mode 100644 @GUI/reset_wh.m create mode 100644 @GUI/resize_fig.m create mode 100644 @GUI/save_call.m create mode 100644 @GUI/save_conditions.m create mode 100644 @GUI/save_data.m create mode 100644 @GUI/save_ext_call.m create mode 100644 @GUI/save_results.m create mode 100644 @GUI/save_settings.m create mode 100644 @GUI/setData.m create mode 100644 @GUI/setPBenable.m create mode 100644 @GUI/set_command_pos.m create mode 100644 @GUI/set_grid.m create mode 100644 @GUI/settings_call.m create mode 100644 @GUI/textbox_callback.m create mode 100644 @GUI/typecheck_call.m create mode 100644 @GUI/undo_call.m create mode 100644 @GUI/update_Statusbar.m create mode 100644 @GUI/update_multi_check_status.m create mode 100644 @GUI/update_prover_check_status.m create mode 100644 @GUI/update_undoredo.m create mode 100644 @Grid/Grid.m create mode 100644 @Grid/clone.m create mode 100644 @Grid/deep_delete.m create mode 100644 @Grid/delete_Cell.m create mode 100644 @Grid/max_width.m create mode 100644 @Grid/new_Cell.m create mode 100644 @Grid/pb_delete_call.m create mode 100644 @Grid/pb_new_call.m create mode 100644 @Grid/purge.m create mode 100644 @Grid/set_delete_pb.m create mode 100644 @Grid/set_heights.m create mode 100644 @Grid/set_pb.m create mode 100644 @Grid/set_rGrid.m create mode 100644 @Grid/set_widths.m create mode 100644 @Grid/upgrade.m create mode 100644 @PVS_checker/PVS_checker.m create mode 100644 @PVS_checker/check_status.m create mode 100644 @PVS_checker/generate_eml_multi.m create mode 100644 @PVS_checker/generate_pvs.m create mode 100644 @PVS_checker/generate_pvs_file.m create mode 100644 @PVS_checker/generate_pvs_horizontal.m create mode 100644 @PVS_checker/generate_pvs_multi_output.m create mode 100644 @PVS_checker/generate_pvs_script.m create mode 100644 @PVS_checker/generate_pvs_status_script.m create mode 100644 @PVS_checker/get_pvs_version.m create mode 100644 @PVS_checker/matlab_to_pvs_syntax_translation.m create mode 100644 @PVS_checker/matlab_type_to_pvs_type.m create mode 100644 @PVS_checker/parse_decl_id.m create mode 100644 @PVS_checker/parse_id.m create mode 100644 @PVS_checker/parse_paren.m create mode 100644 @PVS_checker/parse_prf_file.m create mode 100644 @PVS_checker/parse_pvs_result.m create mode 100644 @PVS_checker/parse_status.m create mode 100644 @PVS_checker/pvs_check.m create mode 100644 @PVS_checker/pvs_check_for_imports.m create mode 100644 @PVS_checker/pvs_check_for_imports_g.m create mode 100644 @PVS_checker/replace_types_sim.m create mode 100644 @PVS_checker/user_imports.m create mode 100644 @RCell/RCell.m create mode 100644 @RCell/flag_cell.m create mode 100644 @RCell/purge.m create mode 100644 @RCell/upgrade.m create mode 100644 @RGrid/RGrid.m create mode 100644 @RGrid/delete_g1s.asv create mode 100644 @RGrid/delete_g1s.m create mode 100644 @RGrid/delete_g2s.m create mode 100644 @RGrid/new_RCell.m create mode 100644 @RGrid/purge.m create mode 100644 @RGrid/refresh.m create mode 100644 @RGrid/search.m create mode 100644 @RGrid/search_return.m create mode 100644 @RGrid/setup.m create mode 100644 @RGrid/upgrade.m create mode 100644 @TTSettings/TTSettings.m create mode 100644 @TTSettings/apply_call.m create mode 100644 @TTSettings/cancel_call.m create mode 100644 @TTSettings/close_fig.m create mode 100644 @TTSettings/elipse_call.m create mode 100644 @TTSettings/init.m create mode 100644 @TTSettings/ok_call.m create mode 100644 @TTSettings/save.m create mode 100644 @TTSettings/setvalues.m create mode 100644 @TTSettings/show.m create mode 100644 @UndoManager/UndoManager.m create mode 100644 @UndoManager/new_state.m create mode 100644 @UndoManager/redo.m create mode 100644 @UndoManager/search_replace.m create mode 100644 @UndoManager/shift_queue_left.m create mode 100644 @UndoManager/shift_queue_right.m create mode 100644 @UndoManager/undo.m create mode 100644 @ValidationReport/ValidationReport.m create mode 100644 @ValidationReport/close_req_call.m create mode 100644 @ValidationReport/init.m create mode 100644 @ValidationReport/pb_next_call.m create mode 100644 @ValidationReport/pb_open_call.m create mode 100644 @ValidationReport/pb_prev_call.m create mode 100644 @ValidationReport/populate.m create mode 100644 @ValidationReport/position.m create mode 100644 @ValidationReport/set_mode.m create mode 100644 @ValidationReport/set_results.m create mode 100644 Examples/Jin_Parnas_Example.mdl create mode 100644 Examples/Jin_Parnas_Example.mdl.r2010a create mode 100644 Examples/PowerCond.mdl create mode 100644 Examples/ReadabilityExample.mdl create mode 100644 Examples/ReadabilityExample.mdl.r2010a create mode 100644 Examples/Simulink_type_example.mdl create mode 100644 Examples/Simulink_type_example.mdl.r2010a create mode 100644 Examples/quadratic_roots.mdl create mode 100644 Examples/quadratic_roots.mdl.r2010a create mode 100644 Examples/unprovable.mdl create mode 100644 Examples/unprovable.mdl.r2010a create mode 100644 PVS_theories/double.pvs create mode 100644 PVS_theories/fp_lemmas.prf create mode 100644 PVS_theories/fp_lemmas.pvs create mode 100644 PVS_theories/matlab_types.pvs create mode 100644 PVS_theories/overload.prf create mode 100644 PVS_theories/overload.pvs create mode 100644 PVS_theories/single.pvs create mode 100644 README.txt create mode 100644 TTdiag.m create mode 100644 TableLibrary.mdl create mode 100644 TableToolMatlab.m create mode 100644 Tests/Untitled.m create mode 100644 Tests/testData.m create mode 100644 Tests/testEMLGenerator.m create mode 100644 Tests/testGUI.m create mode 100644 check_system.m create mode 100644 demo_table.cvc create mode 100644 html/TT_gs_over.m create mode 100644 html/TT_gs_ref.m create mode 100644 html/TT_gs_req.m create mode 100644 html/TT_gs_top.m create mode 100644 html/TT_help.m create mode 100644 html/TT_ug.m create mode 100644 html/TT_ug_background.m create mode 100644 html/TT_ug_checking.m create mode 100644 html/TT_ug_editing.m create mode 100644 html/TT_ug_floating.m create mode 100644 html/TT_ug_opening.m create mode 100644 html/TT_ug_saving.m create mode 100644 html/TT_ug_settings.m create mode 100644 html/generation_doc.m create mode 100644 html/helptoc.xml create mode 100644 html/helptoc_template.xml create mode 100644 html/html/TT_gs_over.html create mode 100644 html/html/TT_gs_ref.html create mode 100644 html/html/TT_gs_req.html create mode 100644 html/html/TT_gs_top.html create mode 100644 html/html/TT_help.html create mode 100644 html/html/TT_ug.html create mode 100644 html/html/TT_ug_background.html create mode 100644 html/html/TT_ug_checking.html create mode 100644 html/html/TT_ug_editing.html create mode 100644 html/html/TT_ug_floating.html create mode 100644 html/html/TT_ug_opening.html create mode 100644 html/html/TT_ug_saving.html create mode 100644 html/html/TT_ug_settings.html create mode 100644 html/html/ug_check_1.png create mode 100644 html/html/ug_check_10.png create mode 100644 html/html/ug_check_2.png create mode 100644 html/html/ug_check_3.png create mode 100644 html/html/ug_check_4.png create mode 100644 html/html/ug_check_5.png create mode 100644 html/html/ug_check_6.png create mode 100644 html/html/ug_check_7.png create mode 100644 html/html/ug_check_8.png create mode 100644 html/html/ug_check_9.png create mode 100644 html/html/ug_layout_1.png create mode 100644 html/html/ug_layout_2.png create mode 100644 html/html/ug_layout_3.png create mode 100644 html/html/ug_layout_4.png create mode 100644 html/html/ug_layout_5.png create mode 100644 html/html/ug_layout_6.png create mode 100644 html/html/ug_layout_7.png create mode 100644 html/html/ug_save_1.png create mode 100644 html/html/walk1.png create mode 100644 html/html/walk2.png create mode 100644 html/html/walk3.png create mode 100644 html/html/walk4.png create mode 100644 html/html/walk5.png create mode 100644 html/html/walk6.png create mode 100644 html/html/walk7.png create mode 100644 html/html/walk8.png create mode 100644 html/html/walk8_old.png create mode 100644 html/html/walk8_p1.png create mode 100644 html/html/walk8_p2.png create mode 100644 html/html/walk9.png create mode 100644 html/html/walk9_p1.png create mode 100644 html/html/walk9_p2.png create mode 100644 info.xml create mode 100644 safe_execute_external_command.m create mode 100644 slblocks.m create mode 100644 slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l create mode 100644 slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.mat create mode 100644 slprj/_sfprj/EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat create mode 100644 slprj/_sfprj/precompile/BowI5YMW1AWxfhCwnohcRB.mat create mode 100644 slprj/_sfprj/untitled/_self/sfun/info/binfo.mat create mode 100644 slprj/_sfprj/untitled/amsi_serial.mat create mode 100644 statusbar.m create mode 100644 untitled.slx create mode 100644 utilities/unsuppressed_output_directory.m create mode 100644 utilities/unsuppressed_output_file.m diff --git a/+TableBlock/delete_recursive.m b/+TableBlock/delete_recursive.m new file mode 100644 index 0000000..d3faa74 --- /dev/null +++ b/+TableBlock/delete_recursive.m @@ -0,0 +1,25 @@ +%% delete_recursive +% delete line which are not collected +% inputs: +% line_handle:float - handle to line to be deleted +% outputs: +% none. +function delete_recursive( line_handle ) + +if get( line_handle, 'SrcPortHandle' ) < 0 + delete_line( line_handle ) ; + return; +end +LineChild = get( line_handle, 'LineChildren' ) ; +if ~isempty( LineChild ) + for i=1:length( LineChild ) + TableBlock.delete_recursive( LineChild( i ) ); + end +else + if get( line_handle, 'DstPortHandle' ) < 0 + delete_line( line_handle ) ; + end +end +end + + diff --git a/+TableBlock/set_block_display.m b/+TableBlock/set_block_display.m new file mode 100644 index 0000000..51df07c --- /dev/null +++ b/+TableBlock/set_block_display.m @@ -0,0 +1,34 @@ +%% set_block_display +% update a block based on an inputed boolean value representing +% the typecheck state. +% inputs: +% block_handle:handle - handle block to update +% checked:boolean - 0 if not typechecked, 1 if typechecked +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_block_display(block_handle,checked) +%if object.pvs_checked == 1 +mask_string = []; +code_block = sprintf('%s/code',getfullname(block_handle)); +in_handles=find_system(code_block, 'SearchDepth',1,'FindAll','On','FollowLinks','On','LookUnderMasks','All','BlockType','Inport'); +for i = 1:size(in_handles,1) + mask_string = [mask_string 'port_label(''input'',' int2str(i) ',''' get_param(in_handles(i),'Name') ''');' ]; +end + +out_handles=find_system(code_block, 'SearchDepth',1,'FindAll','On','FollowLinks','On','LookUnderMasks','All','BlockType','Outport'); +for i = 1:size(out_handles,1) + mask_string = [mask_string 'port_label(''output'',' int2str(i) ',''' get_param(out_handles(i),'Name') ''');' ]; +end + +mask_string = [mask_string 'text(0.5, 0.9, ''Tabular Expression'', ''horizontalAlignment'', ''center'');']; +if checked == 0 + mask_string = [mask_string 'color(''red'');text(0.5, 0.1, ''Not Checked'', ''horizontalAlignment'', ''center'')']; +else + mask_string = [mask_string 'color(''green'');text(0.5, 0.1, ''Checked'', ''horizontalAlignment'', ''center'')']; + +end +set_param(getfullname(block_handle),'MaskDisplay',mask_string); +end + diff --git a/+TableBlock/set_code.m b/+TableBlock/set_code.m new file mode 100644 index 0000000..01bea75 --- /dev/null +++ b/+TableBlock/set_code.m @@ -0,0 +1,196 @@ +%% set_code +% set the script of an embedded matlab block to an inputed +% string of eml code, create the inputs and outputs for the +% subsystem to connect to the eml block +% inputs: +% block_handle:handle - handle block to update +% code:string - eml code +% function_name:string - name of the function +% outputs: +% eml_handle:handle - handle of eml block, as this function may +% create a new block. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function eml_handle = set_code(block_handle,code,function_name) +% unlink the block from the library, this is necessary if +% we +% want to change the subsystem of the block. +set_param(block_handle,'LinkStatus','none'); + + +% determine if the name already exists in the model + +if (~strcmp(get(block_handle,'Name'),function_name)) + try + set_param(block_handle,'Name',function_name); + catch exception + msgbox(exception.message); + end +end + +% embedded matlab code block store code in stateflow states so +% we need to get the root hande +S = sfroot; + +% get the path of the code block +code_block = sprintf('%s/code',getfullname(block_handle)); +% determine if code block already exists +code_blocks = find_system(getfullname(block_handle),'LookUnderMasks','all','BlockType','SubSystem','Name','code'); + +% if the code block does not already exists we need to create a +% new one +if (isempty(code_blocks)) + if (sum(version('-release') >= '2011a') >= 5) + code_blocks = add_block('simulink/User-Defined Functions/MATLAB Function',code_block); + else + code_blocks = add_block('simulink/User-Defined Functions/Embedded MATLAB Function',code_block); + end +end + +eml_handle = code_blocks; +% find the state of the code block and update it to the new +% code +myState = S.find('-isa','Stateflow.EMChart', '-and', 'Path', code_block); % find which one we want to edit + +if (~isempty(myState)) + myState.Script = sprintf('%s',code); +end + +% delete any lines that are unconnected and one end or both +% code from +lines = find_system( getfullname(block_handle), ... + 'LookUnderMasks', 'all', ... + 'FindAll', 'on', ... + 'Type', 'line' ) ; + + +for i=1:length( lines ) + if ishandle( lines( i ) ) + TableBlock.delete_recursive( lines( i ) ); + end +end + + +% we need to determine which of the inports and outports we +% need to create and delete. Whenever we delete a port anything +% connected with this port is unconnected, other blocks, scopes +% etc. We would like to avoid this if possible because it can +% be quite annoying. + +% First loop through all the inport blocks, if there does not +% exists an inport in the code block of the same name then +% delete the inport block +inports = find_system(getfullname(block_handle),'LookUnderMasks','all','SearchDepth',1,'FindAll','On','BlockType','Inport'); +for i=1:size(inports,1) + found = 0; + in_handles=find_system(code_block, 'SearchDepth',1,'FindAll','On','FollowLinks','On','LookUnderMasks','All','BlockType','Inport'); + + for j=1:size(in_handles,1) + if strcmp(get_param(inports(i),'Name'),get_param(in_handles(j),'Name')) + % Make sure the port numbers agree. + set_param(inports(i), 'Port', get_param(in_handles(j), 'Port')); + found = 1; + end + end + + if (~found) + % old inport no longer exists + delete_block(inports(i)); + end +end + +% now we loop through all the inports in the code block if +% there is an inport block of the same name then connect them, +% else create a new inport block and connect them +in_handles=find_system(code_block, 'SearchDepth',1,'FindAll','On','FollowLinks','On','LookUnderMasks','All','BlockType','Inport'); +for j = 1:size(in_handles,1) + found = 0; + inports = find_system(getfullname(block_handle),'LookUnderMasks','all','SearchDepth',1,'BlockType','Inport'); + for i = 1:size(inports,1) + if strcmp(get_param(inports(i),'Name'),get_param(in_handles(j),'Name')) + found = 1; + + % draw the line + new_port_num = sprintf('%s/1',get_param(in_handles(j),'Name')); + dest_port = sprintf('%s/%d','code',j); + try + add_line(getfullname(block_handle),new_port_num,dest_port); + end + end + end + if (~found) + new_port = sprintf('%s/%s',getfullname(block_handle),get_param(in_handles(j),'Name')); + add_block('simulink/Sources/In1',new_port); + new_port_num = sprintf('%s/1',get_param(in_handles(j),'Name')); + dest_port = sprintf('%s/%d','code',j); + % Set the port number so the ports line up properly. + set_param(new_port, 'Port', get_param(in_handles(j), 'Port')); + % sometimes line will be created automatically + try + add_line(getfullname(block_handle),new_port_num,dest_port); + end + end + + +end + + +% Next we do the same thing with the outputs +outports = find_system(getfullname(block_handle),'LookUnderMasks','all','SearchDepth',1,'FindAll','On','BlockType','Outport'); +for i=1:size(outports,1) + found = 0; + out_handles=find_system(code_block, 'SearchDepth',1,'FindAll','On','FollowLinks','On','LookUnderMasks','All','BlockType','Outport'); + + for j=1:size(out_handles,1) + if strcmp(get_param(outports(i),'Name'),get_param(out_handles(j),'Name')) + found = 1; + end + end + + if (~found) + % old inport no longer exists + delete_block(outports(i)); + end +end + +out_handles=find_system(code_block, 'SearchDepth',1,'FindAll','On','FollowLinks','On','LookUnderMasks','All','BlockType','Outport'); +for j = 1:size(out_handles,1) + found = 0; + outports = find_system(getfullname(block_handle),'LookUnderMasks','all','SearchDepth',1,'BlockType','Outport'); + for i = 1:size(outports,1) + if strcmp(get_param(outports(i),'Name'),get_param(out_handles(j),'Name')) + found = 1; + + % draw the line + new_port_num = sprintf('%s/1',get_param(out_handles(j),'Name')); + dest_port = sprintf('%s/%d','code',j); + try + add_line(getfullname(block_handle),dest_port,new_port_num); + end + end + end + if (~found) + new_port = sprintf('%s/%s',getfullname(block_handle),get_param(out_handles(j),'Name')); + add_block('simulink/Sinks/Out1',new_port); + new_port_num = sprintf('%s/1',get_param(out_handles(j),'Name')); + dest_port = sprintf('%s/%d','code',j); + try + add_line(getfullname(block_handle),dest_port,new_port_num); + end + end +end + +% delete any lines that are unconnected and one end or both +% again sometimes extra lines are created +lines = find_system( getfullname(block_handle), ... + 'LookUnderMasks', 'all', ... + 'FindAll', 'on', ... + 'Type', 'line' ) ; + +for i=1:length( lines ) + if ishandle( lines( i ) ) + TableBlock.delete_recursive( lines( i ) ); + end +end + +end \ No newline at end of file diff --git a/@CVC_checker/CVC_checker.m b/@CVC_checker/CVC_checker.m new file mode 100644 index 0000000..1ae1b8e --- /dev/null +++ b/@CVC_checker/CVC_checker.m @@ -0,0 +1,36 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef CVC_checker + + properties + + command = 'cvc3'; + data = []; + + end + + + methods(Static) + + [ code , query] = generate_cvc_grid( grid , level); + [ code ] = find_parents( grid ); + cvc_string = matlab_to_cvc_syntax_translation(matlab_string); + [ cvc_type ] = pvs_to_cvc_subtypes( pvs_type ); + + end + + methods + + %% CVC_checker + % constructor + % inputs: + % data:Data - data to generate from + % outputs: + % object:CVC_checker - generated object. + function object = CVC_checker(data) + object.data = data; + end + end + +end + diff --git a/@CVC_checker/cvc_check.m b/@CVC_checker/cvc_check.m new file mode 100644 index 0000000..ac9fc7d --- /dev/null +++ b/@CVC_checker/cvc_check.m @@ -0,0 +1,99 @@ +%% cvc_check +% checks a table using cvc, parses results and returns them +% +% inputs: +% object:cvc_checker - cvc_checker object +% +% outputs; +% check:boolean - 0 if check fails, 1 if succeds +% seqs:structure - if typecheck succeds then output contains +% parsed output from cvc +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [ check, seqs ] = cvc_check( object ) +%CVC_CHECK Summary of this function goes here +% Detailed explanation goes here + box = waitbar(0,'Generating Proof Script'); + +[filename, queries] = object.generate_file; + + waitbar(.10,box,'Running Proof'); +%tic + % run the cvc command +[status, result] = safe_execute_external_command(['cvc3 ' filename ' +model']); +%toc +% check return status for errors +if (status ~= 0) + + if (status == 127) + msgbox('CVC3 command not found'); + else + msgbox(['an error has occured!' char(10) result]); + end + check = 0; + seqs = 'canceled'; + delete(box); + return; +end + + waitbar(.70,box,'Parsing Results'); + +seqs = []; + + + +% look for parse errors +fatal_exception = regexp(result,'*** Fatal exception'); + +if ~isempty(fatal_exception) + msgbox(['CVC3 encountered a fatal exception' char(10) result],'Fatal Exception','error'); + check = 0; + seqs = 'canceled'; + delete(box); + return; + +end + + +for i = 1:size(queries,2) + asserts = []; + + % find results of individual queries, using regexp and notations in + % output begin1 ... end1 + query_result = regexp(result,['(?<=begin' num2str(i) ').*(?=end' num2str(i) ')'],'match'); + + invalid_found = regexp(char(query_result),'Invalid.|Unknown.'); + + if ~isempty(invalid_found) + % formula was found to be invalid + % look for a counter example + asserts = regexp(char(query_result),'(?<=ASSERT[ ]*\()[^\n]*(?==)|(?<==)[^\n]*(?=\);)','match'); + + + if mod(i,2) == 1 + name = [filename '_' num2str(i) '_DIS']; + else + name = [filename '_' num2str(i) '_COM']; + end + + seqs = [seqs struct('id', '1234a', 'TCC', name, 'seq', queries(i), 'ce', {asserts})]; + end + + + +end + +if isempty(seqs) + check = 1; +else + check = 0; +end + + waitbar(1,box,'Deleting Proof Script'); + + delete(box); + + +end + diff --git a/@CVC_checker/cvc_parse_result.m b/@CVC_checker/cvc_parse_result.m new file mode 100644 index 0000000..fe77bf9 --- /dev/null +++ b/@CVC_checker/cvc_parse_result.m @@ -0,0 +1,7 @@ +function [ output_args ] = cvc_parse_result( input_args ) +%CVC_PARSE_RESULT Summary of this function goes here +% Detailed explanation goes here + + +end + diff --git a/@CVC_checker/find_parents.m b/@CVC_checker/find_parents.m new file mode 100644 index 0000000..f3c0124 --- /dev/null +++ b/@CVC_checker/find_parents.m @@ -0,0 +1,47 @@ +%% find_parents +% function will find all the parents of a cell, used to determine what +% preconditions must be true. +% +% inputs: +% cell:Cell - cell to find the parents of +% +% outputs; +% code:string - string of conjunction of all parent cells. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [ code ] = find_parents( cell ) +% assumption, initial input will be grid we want to find parents for not +% cell itself + +code = ''; +if isempty(cell) + % current cell is empty + code = ''; +else + if isempty(cell.parent_grid.parent_cell) + % no parent cell + + else + % there is a parent cell + top = char(CVC_checker.find_parents(cell.parent_grid.parent_cell)); + code = char(cell.parent_grid.parent_cell.cond_text); + if isempty(top); + % there were no more above this cell + + else + % there were more above this cell + code = [code ' AND ' top]; + end + + + end + + +end + + + + +end + diff --git a/@CVC_checker/generate_cvc_grid.m b/@CVC_checker/generate_cvc_grid.m new file mode 100644 index 0000000..530a349 --- /dev/null +++ b/@CVC_checker/generate_cvc_grid.m @@ -0,0 +1,82 @@ +%% genereate_cvc_grid +% generate the queries for cvc for the inputted grid. +% +% inputs: +% grid:Grid - grid to generate conditions for. +% level:int - count of the queries generated. +% +% outputs; +% code:string - string representing code to generate including comments +% query:cell array - contains string representing both the disjoint and +% complete without the comments, used for validation report. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [ code , query] = generate_cvc_grid( grid , level) + +% generate the formulas for the main grid + +parents = CVC_checker.find_parents(grid.cells(1)); +if isempty(parents); + disjoint = 'QUERY ('; + complete = 'QUERY ('; +else + disjoint = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parents) ' => (']; + complete = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parents) ' => (']; +end + +for i=1:size(grid.cells,2) + + + for j = i+1:size(grid.cells,2) + % compare i to j + disjoint = [disjoint 'NOT ( (' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(i).cond_text)) ') AND (' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(j).cond_text)) ') )']; + + if j~= size(grid.cells,2) + disjoint = [disjoint ' AND ' char(10)]; + + end + + end + % need to do pairwise disjointness + % otherwise doesn't work + + + + complete = [complete '(' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(i).cond_text)) ')']; + + if i < size(grid.cells,2) - 1 + disjoint = [disjoint ' AND ' char(10)]; + end + + if i < size(grid.cells,2) + complete = [complete ' OR ']; + end +end +disjoint = [disjoint ');']; +complete = [complete ');']; + +query = [{disjoint} {complete}]; + +code = ['ECHO "begin' num2str(level+1) '";' char(10) 'PUSH;' char(10) disjoint char(10) 'POP;' char(10) 'ECHO "end' num2str(level+1) '";' char(10)]; +code = [code 'ECHO "begin' num2str(level+2) '";' char(10) 'PUSH;' char(10) complete char(10) 'POP;' char(10) 'ECHO "end' num2str(level+2) '";' char(10)]; + + + +for i=1:size(grid.cells,2) + if ~isempty(grid.cells(i).subgrid) + [new_code,new_queries] = CVC_checker.generate_cvc_grid(grid.cells(i).subgrid,level+2); + code = [code new_code]; + query = [query new_queries]; + level = size(query,2) - 2; + end + +end + + + + + + +end + diff --git a/@CVC_checker/generate_file.m b/@CVC_checker/generate_file.m new file mode 100644 index 0000000..68990c4 --- /dev/null +++ b/@CVC_checker/generate_file.m @@ -0,0 +1,59 @@ +%% genereate_file +% generate the cvc file to be inputted into cvc, calls the generate grid +% function. generates all the variable declarations. +% +% inputs: +% object:CVC_checker - current object. +% +% outputs; +% filename:string - the filename of the generated file +% queries:cell arrray - a list of queries generated by the grids. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [ filename, queries ] = generate_file( object ) + +function_names = EMLGenerator.parse_inputs(object.data.function_name); +function_name = char(function_names{1}(1)); + + +code = []; +% output the input variables +inputs = EMLGenerator.parse_inputs(object.data.function_inputs); +for i = 1:size(inputs,2) + if size(inputs{i},2) > 1 + cvc_type = CVC_checker.pvs_to_cvc_subtypes(inputs{i}(2)); + else + cvc_type = 'REAL'; + end + code = [code char(inputs{i}(1)) ':' char(cvc_type) ';' char(10)]; +end + + +% call the recursive function to generate the queries +new_code = ''; +queries = []; +%generate grid 2 +if size(object.data.Grid2.cells,2) > 1 + [new_code,queries] = CVC_checker.generate_cvc_grid(object.data.Grid2,0); +end +code = [code new_code]; + +if object.data.multi_mode == 0 && size(object.data.Grid1.cells,2) > 1 + [new_code,new_queries] = CVC_checker.generate_cvc_grid(object.data.Grid1,size(queries,2)); + queries = [queries new_queries]; + code = [code new_code]; + +end + + +fileid = fopen([function_name '.cvc'],'w'); +fprintf(fileid,'%s',char(code)); +fclose(fileid); + + +filename = [function_name '.cvc']; + + +end + diff --git a/@CVC_checker/matlab_to_cvc_syntax_translation.m b/@CVC_checker/matlab_to_cvc_syntax_translation.m new file mode 100644 index 0000000..38dde35 --- /dev/null +++ b/@CVC_checker/matlab_to_cvc_syntax_translation.m @@ -0,0 +1,38 @@ +%% matlab_to_cvc_syntax_translation +%translate matlab syntax to cvc syntax, +% will be added to in the future +% will only work for functions in the prelude +% +% inputs: +% object:cvc_checker - cvc_checker object +% matlab_string:string - string to be converted from matlab +% syntax to cvc +% outputs; +% cvc_string:string - string converted to cvc syntax. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function cvc_string = matlab_to_cvc_syntax_translation(matlab_string) + +s = [matlab_string(1,:)]; +for j = 2:size(matlab_string,1) + s = [s ' ' matlab_string(j,:)]; +end +matlab_string = s; + +cvc_string = regexprep(matlab_string,'&&',' AND '); +cvc_string = regexprep(cvc_string,'~(?!=)',' NOT '); +cvc_string = regexprep(cvc_string,'~=',' /= '); +cvc_string = regexprep(cvc_string,'==',' = '); +cvc_string = regexprep(cvc_string,'\|\|',' OR '); +cvc_string = regexprep(cvc_string,'ceil','ceiling'); + +floats = regexp(cvc_string,'[0-9]*\.[0-9]*','match'); +for i=1:size(floats,2) + cvc_string = regexprep(cvc_string,floats{i},['(' strtrim(num2str(rats(eval(floats{i})))) ')'] ); +end + +end + + + + diff --git a/@CVC_checker/pvs_to_cvc_subtypes.m b/@CVC_checker/pvs_to_cvc_subtypes.m new file mode 100644 index 0000000..126265e --- /dev/null +++ b/@CVC_checker/pvs_to_cvc_subtypes.m @@ -0,0 +1,54 @@ +%% pvs_to_cvc_subtypes +% converts types of the pvs syntax to cvc3 syntax. the syntax for doing +% typing in the two languages is slightly different so we need to write +% this function to translate between them. +% +% inputs: +% pvs_type:string - a string of a pvs type +% outputs; +% cvc_type:string - a string of the cvc type. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [ cvc_type ] = pvs_to_cvc_subtypes( pvs_type ) +%PVS_TO_CVC_SUBTYPES Summary of this function goes here +% Detailed explanation goes here + + + + +%pvs_type is parsed +string = char(pvs_type); + +% change cases +string = regexprep(string,'real','REAL'); +string = regexprep(string,'Real','REAL'); +string = regexprep(string,'int','INT'); +string = regexprep(string,'Int','INT'); +string = regexprep(string,'bool','BOOLEAN'); +string = regexprep(string,'Bool','BOOLEAN'); +string = regexprep(string,'BOOL[^EAN]','BOOLEAN'); + +% remove brackets +string_no_brack = regexp(string,'(?<=\{)[^\n]*(?=\})','match'); +if isempty(string_no_brack) + + cvc_type = {string}; + return +end + +split_at_pipe = regexp(char(string_no_brack),'\|','split'); +if (size(split_at_pipe,2) ~= 2) + %something strange happened + cvc_type = {string}; + return; +end + +new_type = ['SUBTYPE( LAMBDA (' char(split_at_pipe{1}) '): ' char(split_at_pipe{2}) ')']; +cvc_type = {new_type}; + + + + +end + diff --git a/@Cell/Cell.m b/@Cell/Cell.m new file mode 100644 index 0000000..1caecc1 --- /dev/null +++ b/@Cell/Cell.m @@ -0,0 +1,43 @@ +classdef Cell < handle + + + properties + subgrid = []; + cond = []; + cond_text = []; + cell_index = 0; + parent_grid = []; + width = 0; + height = 0; + grid_pb = []; + pb_flag = 0; + color = []; + + condition_text_width = 200; + condition_text_height = 60; + condition_text_x = 10; + condition_text_y = 10; + condition_text_offset = 20; + + grid_push_width = 30; + end + + methods + %% Cell + % + % inputs: + % index:integer - cells index + % p_grid:Grid - Parent grid of cell + % outputs; + % object:Cell - created cell + function object = Cell(index, p_grid) + object.cell_index = index; + object.parent_grid = p_grid; + object.pb_flag = 1; + + end + + end + +end + diff --git a/@Cell/cal_height.m b/@Cell/cal_height.m new file mode 100644 index 0000000..329bfce --- /dev/null +++ b/@Cell/cal_height.m @@ -0,0 +1,27 @@ +%% cal_height +% calculates the height in number of cells of the current cell. +% if the cell does not have a subgrid the height will be 1, else +% it will be the height of the subgrid. +% inputs: +% object:Cell - Current Cell Object +% edit:boolean - 0 when not in edit mode, 1 in edit mode +% outputs; +% h:double - height in number of cells +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function h = cal_height(object,edit) +h = 0; +if (isempty(object.subgrid)) + h = 1; +else + for i=1:size(object.subgrid.cells,2) + h = h + cal_height(object.subgrid.cells(i),edit); + end + % edit button is half a cell high, if in edit mode increase + % by 0.5 + if (edit == 1) + h = h + 0.5; + end + +end +end diff --git a/@Cell/delete_Cell.m b/@Cell/delete_Cell.m new file mode 100644 index 0000000..944d0d5 --- /dev/null +++ b/@Cell/delete_Cell.m @@ -0,0 +1,29 @@ +%% delete_Cell +% deletes the current cell, will recursively delete any subgrids +% if they exist. +% inputs: +% object:Cell - Current Cell Object +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = delete_Cell(object) +if(isempty(object.subgrid)) + delete(object.grid_pb); + delete(object.cond); + object.cond = []; + object.grid_pb = []; + %delete(object); +else + % delete the subgrid + object.subgrid.deep_delete; + if(ishghandle(object.grid_pb)) + delete(object.grid_pb); + end + delete(object.cond); + object.cond = []; + object.grid_pb = []; + %delete(object); +end +end + diff --git a/@Cell/flag_cell.m b/@Cell/flag_cell.m new file mode 100644 index 0000000..1e58071 --- /dev/null +++ b/@Cell/flag_cell.m @@ -0,0 +1,22 @@ +%% flag_cell +% mode +% 0 - normal +% 1 - red (error/false) +% 2 - green (ok/true) +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = flag_cell(object,mode) + +if (isempty(object.color)) + object.color = get(object.cond,'BackgroundColor'); +end + +if (mode == 0) + set(object.cond,'BackgroundColor',object.color); +elseif (mode == 1) + set(object.cond,'BackgroundColor',[0.92 0.65 0.65]); +elseif (mode == 2) + set(object.cond,'BackgroundColor',[0.03 1.0 0.32]); +end + +end diff --git a/@Cell/get_pos.m b/@Cell/get_pos.m new file mode 100644 index 0000000..36d8e57 --- /dev/null +++ b/@Cell/get_pos.m @@ -0,0 +1,15 @@ + +%% get_pos +% Returns the position of the edit box for the cell +% inputs: +% object:Cell - Current Cell Object +% outputs; +% pos:[double double double double] - position of the cell +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function pos = get_pos(object) +if (~isempty(object.cond)) + pos = get(object.cond,'position'); +end +end + diff --git a/@Cell/new_Grid.m b/@Cell/new_Grid.m new file mode 100644 index 0000000..2586ab7 --- /dev/null +++ b/@Cell/new_Grid.m @@ -0,0 +1,19 @@ +%% new_Grid +% +% inputs: +% object:Cell - Current Cell Object +% outputs; +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = new_Grid(object) +object.subgrid = Grid(object.cell_index,object); +object.subgrid.new_Cell; +object.subgrid.new_Cell; +object.subgrid.set_rGrid(object.parent_grid.rGrid); +object.pb_flag = 0; +delete(object.grid_pb); +if(~isempty(object.parent_grid.rGrid)) + object.parent_grid.rGrid.delete_g2s(object); +end +end + diff --git a/@Cell/pb_call.m b/@Cell/pb_call.m new file mode 100644 index 0000000..a6c2d6d --- /dev/null +++ b/@Cell/pb_call.m @@ -0,0 +1,37 @@ +%% pb_call +% callback function for the new subgrid button +% inputs: +% object:Cell - Current Cell Object +% src:double - Source of the callback +% event:eventdata - Data of the eventcall +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pb_call(object,src,event) +gui = get(src,'userdata'); + + + + +object.new_Grid; +gui.reset_wh(); +%gui.draw_grid2(gui.Grid2); +gui.draw_allgrids(0); + +if isempty(event) || event ~= 1 + + undo_data.action = 4; + undo_data.grid = object.subgrid; + undo_data.cell = object; + undo_data.text = []; + undo_data.subgrid = []; + + gui.undo_man.new_state(undo_data); +end + +gui.update_undoredo; + + +end + diff --git a/@Cell/purge.m b/@Cell/purge.m new file mode 100644 index 0000000..2a393b4 --- /dev/null +++ b/@Cell/purge.m @@ -0,0 +1,19 @@ +%% purge +% Removes useless data from the block on saving, avoiding unnecessary +% changes and data storage. +% inputs: +% object - Cell object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function purge( object ) +object.grid_pb = []; +object.cond = []; +object.color = []; % This is always regenerated, so it is safe to kill. + +for i=1:size(object.subgrid,2) + object.subgrid(i).purge; +end +end + diff --git a/@Cell/set_pb.m b/@Cell/set_pb.m new file mode 100644 index 0000000..66ed4e1 --- /dev/null +++ b/@Cell/set_pb.m @@ -0,0 +1,23 @@ +%% set_pb +% create the new subgrid push button handle +% inputs: +% object:Cell - Current Cell Object +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_pb(object,fig,pos) +if(object.pb_flag == 1 && (isempty(object.grid_pb) || ~ishghandle(object.grid_pb))) + object.grid_pb = uicontrol('style','push',... + 'units','pix',... + 'string','+',... + 'HorizontalAlign','left',... + 'Parent',fig,... + 'position',pos,... + 'callback',@(src,event)pb_call(object,src,event)); +elseif (object.pb_flag == 1 && ~isempty(object.grid_pb)) + set(object.grid_pb,'Position',pos); +else +end +end + diff --git a/@Cell/set_pos.m b/@Cell/set_pos.m new file mode 100644 index 0000000..c666504 --- /dev/null +++ b/@Cell/set_pos.m @@ -0,0 +1,17 @@ +%% set_pos +% allows accessor to set the position of the edit box for the +% cell. +% inputs: +% object:Cell - Current Cell Object +% pos:[double double double double] - the new position of the +% cell +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_pos(object,pos) +if (~isempty(object.cond)) + set(object.cond,'position',pos); +end +end + diff --git a/@Cell/upgrade.m b/@Cell/upgrade.m new file mode 100644 index 0000000..6e93e21 --- /dev/null +++ b/@Cell/upgrade.m @@ -0,0 +1,18 @@ +%% upgrade +% Preforms any necessary upgrades to the TET to comply with the latest version. +% inputs: +% object - Cell object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function upgrade( object ) +if iscell(object.cond_text) + object.cond_text = object.cond_text{1}; +end + +for i=1:size(object.subgrid,2) + object.subgrid(i).upgrade; +end +end + diff --git a/@Data/Data.m b/@Data/Data.m new file mode 100644 index 0000000..0bb9f7f --- /dev/null +++ b/@Data/Data.m @@ -0,0 +1,38 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef Data < handle + % This class will store the data for each table, ideally to seperate + % out the data from the gui and logic. + + properties + Grid0 = []; + Grid1 = []; + Grid2 = []; + function_name = []; + function_inputs = []; + settings = []; + checked = []; + open = []; + fig = []; + multi_mode = []; + end + + + + methods + + %% Data + % constructor + % inputs: + % none + % outputs: + % object:Data - created object + function object = Data() + + end + + end + + +end + diff --git a/@Data/clone.m b/@Data/clone.m new file mode 100644 index 0000000..b4569fc --- /dev/null +++ b/@Data/clone.m @@ -0,0 +1,42 @@ +%% clone +% creates copy of a data object, which involves copying +% properties and calling individual clone functions on objects if +% necessary. +% inputs: +% object:Data - current object +% handle:Data - the handle to the block +% outputs: +% copy:Data - copy of the current block, perhaps with a new name +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function copy = clone(object,handle) +% assume that dialog is closed +if ~object.valid + copy = []; + return; +end +copy = Data(); +if ~isempty(handle) + copy.function_name = get(handle,'Name'); +else + copy.function_name = ''; +end +copy.function_inputs = object.function_inputs; +copy.checked = object.checked; +copy.settings = object.settings; +copy.multi_mode = object.multi_mode; + +copy.Grid2 = Grid(2,[]); +copy.Grid1 = Grid(1,[]); +copy.Grid0 = RGrid(copy.Grid1,copy.Grid2); +copy.Grid1.set_rGrid(copy.Grid0); +copy.Grid2.set_rGrid(copy.Grid0); + + +object.Grid2.clone(copy.Grid2,object.Grid2.grid_index,[]); +object.Grid1.clone(copy.Grid1,object.Grid1.grid_index,[]); + +object.copy_results(copy); + +end + diff --git a/@Data/copy_results.m b/@Data/copy_results.m new file mode 100644 index 0000000..27785ec --- /dev/null +++ b/@Data/copy_results.m @@ -0,0 +1,21 @@ +%% copy_results +% copy the results text of the current grid0 to a destination +% Data's grid0 object. +% inputs: +% object:Data - current object +% dest:Data - destination object to save results text to, results +% grid is assumed to already be set up. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = copy_results(object,dest) +for i=1:size(dest.Grid0.Cells,2) + for j=1:size(object.Grid0.Cells,2) + if (strcmp(object.Grid0.Cells(j).Cell1.cond_text,dest.Grid0.Cells(i).Cell1.cond_text) && strcmp(object.Grid0.Cells(j).Cell2.cond_text,dest.Grid0.Cells(i).Cell2.cond_text)) + dest.Grid0.Cells(i).result_text = object.Grid0.Cells(j).result_text; + end + end +end +end + diff --git a/@Data/getData.m b/@Data/getData.m new file mode 100644 index 0000000..5bb6f0c --- /dev/null +++ b/@Data/getData.m @@ -0,0 +1,23 @@ +%% getData +% resturn individual properties to calling function +% inputs: +% object:Data - current object +% outputs: +% grid0:Grid - Results Grid +% grid1:Grid - Left Grid +% grid2:Grid - Top Grid +% name:string - Function name +% inputs:string - input string +% checked:boolean - typecheck status +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [grid0, grid1, grid2, name, inputs, checked, multi] = getData(object) +grid0 = object.Grid0; +grid1 = object.Grid1; +grid2 = object.Grid2; +name = object.function_name; +inputs = object.function_inputs; +checked = object.checked; +multi = object.multi_mode; +end + diff --git a/@Data/init.m b/@Data/init.m new file mode 100644 index 0000000..019fc82 --- /dev/null +++ b/@Data/init.m @@ -0,0 +1,20 @@ +%% init +% initialize the data to some default values and objects +% inputs: +% object:Data - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = init(object) +object.Grid2 = Grid(2,[]); +object.Grid1 = Grid(1,[]); +object.Grid0 = RGrid(object.Grid1,object.Grid2); +object.Grid1.set_rGrid(object.Grid0); +object.Grid2.set_rGrid(object.Grid0); +object.Grid2.new_Cell; +object.Grid1.new_Cell; +object.checked = 0; +object.multi_mode = 0; +end + diff --git a/@Data/purge.m b/@Data/purge.m new file mode 100644 index 0000000..0844e06 --- /dev/null +++ b/@Data/purge.m @@ -0,0 +1,16 @@ +%% purge +% Removes useless data from the block on saving, avoiding unnecessary +% changes and data storage. +% inputs: +% object - Data object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function purge( object ) +object.Grid0.purge + +object.Grid1.purge +object.Grid2.purge +end + diff --git a/@Data/save.m b/@Data/save.m new file mode 100644 index 0000000..51ddaa5 --- /dev/null +++ b/@Data/save.m @@ -0,0 +1,12 @@ +%% save +% saves the current data object to an external file +% inputs: +% object:Data - current Data object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = save(object) +filename = [ object.function_name '.table']; +save(filename,'object'); +end diff --git a/@Data/setData.m b/@Data/setData.m new file mode 100644 index 0000000..1083886 --- /dev/null +++ b/@Data/setData.m @@ -0,0 +1,24 @@ +%% setData +% set the object properties, used when copying and other places +% inputs: +% object:Data - current object +% grid0:Grid - Results Grid +% grid1:Grid - Left Grid +% grid2:Grid - Top Grid +% name:string - Function name +% inputs:string - input string +% checked:boolean - typecheck status +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = setData(object, grid0, grid1, grid2, name, inputs, checked, multi) +object.Grid0 = grid0; +object.Grid1 = grid1; +object.Grid2 = grid2; +object.function_name = name; +object.function_inputs = inputs; +object.checked = checked; +object.multi_mode = multi; +end + diff --git a/@Data/setvalues.m b/@Data/setvalues.m new file mode 100644 index 0000000..1af9774 --- /dev/null +++ b/@Data/setvalues.m @@ -0,0 +1,13 @@ +%% setvalues +% set the settings property to a settings object +% inputs: +% object:Data - current object +% settings:Settings - settings object to save +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = setvalues(object,settings) +object.settings = settings; +end + diff --git a/@Data/upgrade.m b/@Data/upgrade.m new file mode 100644 index 0000000..97dd07a --- /dev/null +++ b/@Data/upgrade.m @@ -0,0 +1,15 @@ +%% upgrade +% Preforms any necessary upgrades to the TET to comply with the latest version. +% inputs: +% object - Data object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function upgrade( object ) +object.Grid0.upgrade + +object.Grid1.upgrade +object.Grid2.upgrade +end + diff --git a/@Data/valid.m b/@Data/valid.m new file mode 100644 index 0000000..244e401 --- /dev/null +++ b/@Data/valid.m @@ -0,0 +1,25 @@ +%% valid +% determine if a given data object is valid for use or not +% inputs: +% object:Data - current object +% outputs: +% valid:boolean - 0 if not valid, 1 if valid +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function valid = valid(object) +if isempty(object.Grid0) + valid = 0; + return +end +if isempty(object.Grid1) + valid = 0; + return +end +if isempty(object.Grid2) + valid = 0; + return +end +valid = 1; + +end + diff --git a/@EMLGenerator/EMLGenerator.m b/@EMLGenerator/EMLGenerator.m new file mode 100644 index 0000000..28fd2d9 --- /dev/null +++ b/@EMLGenerator/EMLGenerator.m @@ -0,0 +1,42 @@ + +classdef EMLGenerator < handle + %UNTITLED Summary of this class goes here + % Detailed explanation goes here +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + properties + data = []; + datatype = []; + multi_output = 1; + end + + methods(Static) + revised_input = parse_inputs(input_string); + + + + converted = type_convert(name,type,expression); + + + + end + + methods + %% EMLGenerator + % constructor + % inputs: + % data:Data - data object to use as data + % outputs: + % object:EMLGenerator - created object + function object = EMLGenerator(data) + object.data = data; + end + + + + + + end + +end + diff --git a/@EMLGenerator/generate_eml_code.m b/@EMLGenerator/generate_eml_code.m new file mode 100644 index 0000000..4844f34 --- /dev/null +++ b/@EMLGenerator/generate_eml_code.m @@ -0,0 +1,18 @@ +%% generate_eml_code +% generates the embedded matlab code by calling other methods in +% this class +% inputs: +% object:EMLGenerator - current object +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_eml_code(object) +code = []; +code = [code object.generate_preamble]; +code = [code object.generate_eml_cond(object.data.Grid1,object.data.Grid2,0)]; + +end + + + diff --git a/@EMLGenerator/generate_eml_cond.m b/@EMLGenerator/generate_eml_cond.m new file mode 100644 index 0000000..11989d4 --- /dev/null +++ b/@EMLGenerator/generate_eml_cond.m @@ -0,0 +1,101 @@ +%% generate_eml_cond +% generate the embedded matlab for a conditon grid, recursive +% function, will call horizontal generator if finds conditions +% in that grid. +% inputs: +% object:EMLGenerator - current object +% g1:Grid - Grid 1 +% g2:Grid - Grid 2 +% depth:int - integer representing recursion dept for formating +% use +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_eml_cond(object,g1,g2,depth) + + + + +space = ''; +for i=1:depth + space = [space sprintf(' ')]; +end +g1cond1 = g1.cells(1).cond_text; +g2cond1 = g2.cells(1).cond_text; +code = []; +%1D horizontal +if(~isempty(g1cond1) && isempty(g2cond1)) + if object.data.multi_mode == 0 + code = [code object.generate_eml_horizontal(g1,g2.cells(1),depth)]; + else + code = [code object.generate_eml_multi(g1,g2.cells(1),depth)]; + end + % something in vertical column +else + + elsecell = []; + for i=1:size(g2.cells,2) + g2cond = g2.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + if (strcmp(g2cond,'otherwise')) + elsecell = g2.cells(i); + found = 1; + continue + end + if (i == 1) + code = [code sprintf('%sif(%s)\n',space,(strtrim(char(g2.cells(i).cond_text))))]; + else + code = [code sprintf('%selseif(%s)\n',space,(strtrim(char(g2.cells(i).cond_text))))]; + end + + if(~isempty(g2.cells(i).subgrid)) + code = [code object.generate_eml_cond(g1,g2.cells(i).subgrid,depth+1)]; + else + if (~isempty(g1cond1)) + if object.data.multi_mode == 0 + code = [code object.generate_eml_horizontal(g1,g2.cells(i),depth+1)]; + else + code = [code object.generate_eml_multi(g1,g2.cells(i),depth+1)]; + end + %code = [code object.generate_eml_horizontal(g1,g2.cells(i),depth+1)]; + else + + resultcell = object.data.Grid0.search_return(g1.cells(1),g2.cells(i)); + if(~isempty(resultcell)) + code = [code sprintf('%soutput = %s;\n',[space ' '],EMLGenerator.type_convert('output',object.datatype,strtrim(char(resultcell.result_text))))]; + + else + end + end + end + + end + if(~isempty(elsecell)) + %resultcell = object.Grid0.search_return(elsecell,elsecell); + code = [code sprintf('%selse\n',space)]; + + if(~isempty(elsecell.subgrid)) + code = [code object.generate_eml_cond(g1,elsecell.subgrid,depth) sprintf('\n')]; + else + if (~isempty(g1cond1)) + code = [code object.generate_eml_horizontal(g1,elsecell,depth) sprintf('\n')]; + else + + resultcell = object.data.Grid0.search_return(g1.cells(1),elsecell); + if(~isempty(resultcell)) + code = [code sprintf('%soutput = %s;\n',[space ' '],EMLGenerator.type_convert('output',object.datatype,strtrim(char(resultcell.result_text))))]; + + end + end + end + + end + + code = [code sprintf('%send\n',space)]; + +end +end \ No newline at end of file diff --git a/@EMLGenerator/generate_eml_horizontal.m b/@EMLGenerator/generate_eml_horizontal.m new file mode 100644 index 0000000..f4d19ba --- /dev/null +++ b/@EMLGenerator/generate_eml_horizontal.m @@ -0,0 +1,54 @@ +%% generate_eml_horizontal +% generate the embedded matlab code for grid1, seperated from +% the code for grid2 since for a 2d table grid1 conditions will +% be sub conditions of grid2 conditions +% inputs: +% object:EMLGenerator - current object +% g1:Grid - Grid 1 +% g2_cell:Cell - Cell for which grid1 is sub conditon of +% depth:int - integer representing recursion dept for formating +% use +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_eml_horizontal(object,g1,g2_cell,depth) +space = ''; +for i=1:depth + space = [space sprintf(' ')]; +end +code = []; + +elsecell = []; +for i=1:size(g1.cells,2) + g1cond = g1.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + if (strcmp(g1cond,'otherwise')) + elsecell = g1.cells(i); + found = 1; + continue + end + if (i == 1) + code = [code sprintf('%sif(%s)\n',space,strtrim(char(g1.cells(i).cond_text)))]; + else + code = [code sprintf('%selseif(%s)\n',space,strtrim(char(g1.cells(i).cond_text)))]; + end + resultcell = object.data.Grid0.search_return(g1.cells(i),g2_cell); + if(~isempty(resultcell)) + code = [code sprintf('%soutput = %s;\n',[space ' '],EMLGenerator.type_convert('output',object.datatype,strtrim(char(resultcell.result_text))))]; + + else + end +end +if(~isempty(elsecell)) + resultcell = object.data.Grid0.search_return(elsecell,g2_cell); + code = [code sprintf('%selse\n%soutput = %s;\n',space,[space ' '],EMLGenerator.type_convert('output',object.datatype,strtrim(char(resultcell.result_text))))]; + +end +code = [code sprintf('%send\n',space)]; + +end + diff --git a/@EMLGenerator/generate_eml_multi.m b/@EMLGenerator/generate_eml_multi.m new file mode 100644 index 0000000..a29c255 --- /dev/null +++ b/@EMLGenerator/generate_eml_multi.m @@ -0,0 +1,52 @@ +%% generate_eml_horizontal +% generate the embedded matlab code for grid1, seperated from +% the code for grid2 since for a 2d table grid1 conditions will +% be sub conditions of grid2 conditions +% inputs: +% object:EMLGenerator - current object +% g1:Grid - Grid 1 +% g2_cell:Cell - Cell for which grid1 is sub conditon of +% depth:int - integer representing recursion dept for formating +% use +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_eml_multi(object,g1,g2_cell,depth) +space = ''; +for i=1:depth + space = [space sprintf(' ')]; +end +code = []; +code2 = []; +elsecell = []; +for i=1:size(g1.cells,2) + g1cond = g1.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + + output_parsed = EMLGenerator.parse_inputs(strtrim(char(g1.cells(i).cond_text))); + + output = char(output_parsed{1}(1)); + + + code = [code sprintf('%s%s = ',space,output)]; + + resultcell = object.data.Grid0.search_return(g1.cells(i),g2_cell); + if(~isempty(resultcell)) + + code = [code sprintf('%s;\n',EMLGenerator.type_convert(output,object.datatype,char(resultcell.result_text)))]; + + else + + end + +end + + + + +end + diff --git a/@EMLGenerator/generate_preamble.m b/@EMLGenerator/generate_preamble.m new file mode 100644 index 0000000..b070c4f --- /dev/null +++ b/@EMLGenerator/generate_preamble.m @@ -0,0 +1,124 @@ +%% generate_preamble +% generates the preamble for the eml code, the preamble is +% everything before the first if statement, this is seperated +% out to make the code simpler. +% inputs: +% object:EMLGenerator - current object +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_preamble(object) + +code = []; +function_name = EMLGenerator.parse_inputs(object.data.function_name); +%generate input list +parsed_input = EMLGenerator.parse_inputs(object.data.function_inputs); +input = []; +for i= 1:size(parsed_input,2) + input = [input char(parsed_input{i}(1))]; + if i ~= size(parsed_input,2) + input = [input ',']; + end +end + +output = []; +if (object.data.multi_mode == 1) + for i=1:size(object.data.Grid1.cells,2) + parsed_output = EMLGenerator.parse_inputs(strtrim(char(object.data.Grid1.cells(i).cond_text))); + + output = [output char(parsed_output{1}(1))]; + + if i ~= size(object.data.Grid1.cells,2) + output = [output ',']; + end + end +else + output = 'output'; +end + +exception_flag = object.data.settings.except; + +if (exception_flag) + code = sprintf('function [%s, exception] = %s(%s)\n%s\n',output,char(function_name{1}(1)),input,'%%#eml'); +else + code = sprintf('function [%s] = %s(%s)\n%s\n',output,char(function_name{1}(1)),input,'%%#eml'); +end + + + + + +% simulink forces you to have an output for all execution paths +% since it can't compute completness and disjointness we need +% to have a default value, if the user builds the table +% properly the default value will never be used. since +% different types might have a different default value, the +% temporary solution is just to use one of the outputs from our +% table, we will use the first cell because it is +% guaranteed to +% be filled in, regardless of the dimensionality of the table. + +left_top_right_top_cell = object.data.Grid2.cells(1); +while size(left_top_right_top_cell.subgrid) ~= 0 + left_top_right_top_cell = left_top_right_top_cell.subgrid.cells(1); +end + + +if (object.data.multi_mode == 1) + for i=1:size(object.data.Grid1.cells,2) + parsed_output = EMLGenerator.parse_inputs(strtrim(char(object.data.Grid1.cells(i).cond_text))); + + output_str = char(parsed_output{1}(1)); + + code = [code sprintf('%s=%s;\n',output_str,EMLGenerator.type_convert(output_str,object.datatype,char(object.data.Grid0.search_return(object.data.Grid1.cells(i), left_top_right_top_cell).result_text)))]; + + end + +else + test = 'output'; + output_string = EMLGenerator.type_convert(test,object.datatype,char(object.data.Grid0.Cells(1).result_text) ); + code = [code sprintf('output=%s;\n', output_string )]; + +end + + +if (exception_flag) + + % generate NaN exceptions + nan_string = ''; + + % genereate constraint exception + cons_string = ''; + + for i = 1:size(parsed_input,2) + % for each input consider if a NaN + + nan_string = [nan_string 'isnan(' char(parsed_input{i}(1)) ')']; + + if i ~= size(parsed_input,2) + nan_string = [nan_string '||']; + end + + if size(parsed_input{i},2) == 2 + + str = regexp(parsed_input{i}(2),'(?<=\|).*(?=})','match','once'); + + if (~isempty(char(str))) + cons_string = [cons_string sprintf('if ~(%s) \n exception = true;\n return;\nelse\n exception = false;\nend\n',char(str))]; + end + + end + + + + end + code = [code sprintf('if (%s) \n exception = true;\n return;\nelse\n exception = false;\nend\n',nan_string)]; + code = [code cons_string]; + + + +end + +end + diff --git a/@EMLGenerator/parse_inputs.m b/@EMLGenerator/parse_inputs.m new file mode 100644 index 0000000..a0f022e --- /dev/null +++ b/@EMLGenerator/parse_inputs.m @@ -0,0 +1,53 @@ +%% parse_inputs +% parse an input string and return the list of inputs as a +% matrix with accompaning type or indicating an error +% inputs: +% input_string:string - string containing input string, comma +% delimited list of variables, each variable may or may not be +% followed by a colon then a type string. +% outputs: +% revised_input:matrix - matrix containing parsed list, ex. +% [{'x' 'int'};{'y'};{ 'z:{x:real|x>1}' }] +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function revised_input = parse_inputs(input_string) +revised_input = []; +input_string2 = reshape(input_string',1,size(input_string,1)*size(input_string,2)); +inputs = regexprep(input_string2,'\n',''); +inputs = regexp(inputs,',','split'); + +% need to be careful here because pvs dependant types can have multiple +% :'s in them + +% find the first :, any thing before this is considered the +% variable any thing following is considered the type +c_locations = regexp(inputs,':','start'); +for i= 1:size(inputs,2) + sub_input = []; + if size(c_locations{i},2) == 0 + sub_input{1} = inputs{i}; + new_inputs{i} = sub_input; + else + sub_input{1} = inputs{i}(1:c_locations{i}(1)-1); + sub_input{2} = inputs{i}(c_locations{i}(1)+1:end); + new_inputs{i} = sub_input; + %new_inputs{i}(1) = inputs{i}(1:c_locations{i}(1)) + %new_inputs{i}(2) = inputs{i}(c_locations{i}(1):end) + end +end + +%inputs = regexp(inputs,':','split') + +for i=1:size(new_inputs,2) + new_inputs{i}(1) = regexprep(new_inputs{i}(1),'\s',''); + + valid = regexp(new_inputs{i}(1),'[a-zA-Z][_a-zA-Z0-9]*','match'); + if isempty(char(new_inputs{i}(1))) || length(valid{1}(1)) == 0 || ~strcmp(new_inputs{i}(1),valid{1}(1)) + new_inputs{i}(2) = {'error'}; + %revised_input = cat(2,revised_input,[char(inputs{i}(1)); 'error']) + end +end +if isempty(revised_input) + revised_input = new_inputs; +end +end \ No newline at end of file diff --git a/@EMLGenerator/set_datatype.m b/@EMLGenerator/set_datatype.m new file mode 100644 index 0000000..50561bc --- /dev/null +++ b/@EMLGenerator/set_datatype.m @@ -0,0 +1,13 @@ +%% set_datatype +% set the datatype property based inputed string based on the simulink settings +% inputs: +% object:EMLGenerator - current object +% type:string - string of datatype conversion +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_datatype(object,type) +object.datatype = type; +end + diff --git a/@EMLGenerator/type_convert.m b/@EMLGenerator/type_convert.m new file mode 100644 index 0000000..a7a2579 --- /dev/null +++ b/@EMLGenerator/type_convert.m @@ -0,0 +1,32 @@ +%% type_convert +% generate a type conversion string based on an inputed type and +% an expression to convert. +% inputs: +% type:string - datatype string +% expression:string - string of the expression +% outputs: +% converted:string - type conversion string +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function converted = type_convert(name,type,expression) +if ~isempty(type) + for i=1:size(type,1) + if strcmp(name,type{i}) + break; + end + end + type_index = (size(type,1)*size(type,2))/2; + if strncmp(type{i+type_index},'fixdt',5) + params = type{i+type_index}(7:end-1); % check this + converted = ['fi(' expression ',' params ')']; + elseif strcmp(type{i+type_index},'Inherit') + converted = [expression]; + else + + converted = [type{i+type_index} '(' expression ')']; + end + +else + converted = expression; +end +end \ No newline at end of file diff --git a/@GUI/GUI.m b/@GUI/GUI.m new file mode 100644 index 0000000..97fada8 --- /dev/null +++ b/@GUI/GUI.m @@ -0,0 +1,99 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef GUI < handle + + + properties + % vertical grid + Grid2 = []; + + % horizontal grid + Grid1 = []; + %output grid + Grid0 = []; + main_fig = []; + frame = []; + fig = []; + scroll_v = []; + edit_tog = []; + save_pb = []; + pvs_pb = []; + close_pb = []; + save_ext_pb = []; + check_pb = []; + input_pb = []; + settings_pb = []; + function_name_control = []; + function_name_text = []; + function_inputs_text = []; + function_inputs_control = []; + edit = 1; + initialized = 0; + block_handle = []; + settings = []; + % height of header where buttons and text is + header_height = 120; + % window size + fig_height = 600; + fig_width = 800; + % space inbetween buttons in header + pb_offset = 5; + % width of push buttons in header + pb_width = 80; + % height of push buttons in header + pb_height = 40; + % height of header text boxes + htx_height = 60; + % width of text boxes + text_width = 250; + name_label = []; + input_label = []; + Data = []; + PVS = []; + CVC = []; + pvs_checked = []; + mode = []; + EMLGen = []; + TableBlk = []; + saved = []; + validation_report_handle = []; + multi_type = 0; + multi_mode = []; + multi_grp = []; + multi_opt_reg = []; + multi_opt_out = []; + prover_opt_pvs = []; + prover_opt_cvc = []; + version = '0.7.4'; + undo_man = []; + undo_opt = []; + redo_opt = []; + + default_prover = []; + PVS_const = 1; + CVC_const = 2; + + end + + methods + %% GUI + % constructor + % inputs: + % h:double - handle to Tabular block in model + % mode:boolean - the mode of the gui, 1 for simuink, 0 for matlab + % outputs: + % object:GUI - object that is created + function object = GUI(h,mode) + object.block_handle = h; + object.mode = mode; + end + + + end + + methods(Static) + msgbox_scroll(msg); + + end +end + diff --git a/@GUI/about_call.m b/@GUI/about_call.m new file mode 100644 index 0000000..76ccefa --- /dev/null +++ b/@GUI/about_call.m @@ -0,0 +1,11 @@ +%% about_call +% Displays a messagebox with information about the current +% inputs: +% object:PVS_checker - GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = about_call(object,src,event) + msgbox(sprintf('Tabular Expression Toolbox v%s\nCopyright 2011\nColin Eles & 2012 Matthew Dawson, Mark Lawford\nMcMaster Center for Software Certification',object.version),'About Tabular Expression Toolbox','modal'); +end diff --git a/@GUI/check_call.m b/@GUI/check_call.m new file mode 100644 index 0000000..dc29338 --- /dev/null +++ b/@GUI/check_call.m @@ -0,0 +1,37 @@ +%% check_call +% callback function for check pushbutton. compiles a message of +% the errors that were detected in each of the grids. outputs the +% message to users via a msgbox. +% inputs: +% object:GUI - current GUI object +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function error = check_call(object,src,event) +error = 0; + +msg = object.check_inputs; +if (isempty(msg)) + set(object.function_inputs_control,'BackgroundColor',[1 1 1]); + msg = object.check_grid_condition(object.Grid2); + if object.multi_mode == 0 + msg = [msg object.check_grid_condition(object.Grid1)]; + end + msg = [msg object.check_grid_result(object.Grid0)]; +else + set(object.function_inputs_control,'BackgroundColor',[0.92 0.65 0.65]); +end + +if ~isempty(msg) + + if isempty(event) + msgbox(msg); + end + error = 1; +end + +end + diff --git a/@GUI/check_grid_condition.m b/@GUI/check_grid_condition.m new file mode 100644 index 0000000..e21eec6 --- /dev/null +++ b/@GUI/check_grid_condition.m @@ -0,0 +1,68 @@ +%% check_grid +% check_grid will recursively loop through all the cells of a +% grid and call the check_matlab_syntax function for each of the +% strings in the cells. if there is an error the cell will +% change colours to alert the user where the problem is. +% inputs: +% object:GUI - current GUI object +% grid:Grid - Grid object being checked +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function msg = check_grid_condition(object,grid) +msg = []; +for i = 1:size(grid.cells,2) + + error = ''; + string = get(grid.cells(i).cond,'String'); + + if size(string) > 0 + s = [string(1,:)]; + for j = 2:size(string,1) + s = [s ' ' string(j,:)]; + end + string = s; + end + + if ( strcmp(string,'') || isempty(string)) && i == 1 && isempty(grid.parent_grid) && size(grid.cells,2) == 1 + break; + end + + % if the string is empty indicating that the table is 1 + % dimensional or the string is "otherwise" skip the syntax + % checking. + if(~isempty(string) && ~strcmp(string,'otherwise')) + error = object.check_matlab_syntax_condition(char(string),0); + end + if isempty(error) + if (strcmp(string,'') || isempty(string)) + error = 'Cell is empty'; + end + end + if ~isempty(error) + % generate the message string + msg = [msg sprintf('\n')]; + + msg = [msg 'Condtion -> ' char(string) sprintf('\n')]; + msg = [msg error sprintf('\n')]; + + % set tooltip string of cell to error msg + set(grid.cells(i).cond,'TooltipString',error); + % change background colour + grid.cells(i).flag_cell(1); + else + % reset tooltip and colour if no error found + set(grid.cells(i).cond,'TooltipString','') + grid.cells(i).flag_cell(0); + + + end + % recurse through subgrid + if(~isempty(grid.cells(i).subgrid)) + msg = [msg object.check_grid_condition(grid.cells(i).subgrid)]; + end + + +end +end diff --git a/@GUI/check_grid_result.m b/@GUI/check_grid_result.m new file mode 100644 index 0000000..c174ec4 --- /dev/null +++ b/@GUI/check_grid_result.m @@ -0,0 +1,41 @@ +%% check_grid_result +% Similar to above function check_grid_result, will loop through +% the cells of the output grid, unline check_grid, does not need to +% recurse. +% inputs: +% object:GUI - current GUI object +% grid:RGrid - RGrid object to be checked +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function msg = check_grid_result(object,grid) +msg = []; +for i = 1:size(grid.Cells,2) + error = ''; + string = get(grid.Cells(i).result,'String'); + + + error = object.check_matlab_syntax_condition(char(string),1); + if isempty(error) + if (strcmp(string,'') || isempty(string)) + error = 'Cell is empty'; + end + end + if ~isempty(error) + msg = [msg sprintf('\n')]; + + msg = [msg 'Result -> ' char(string) sprintf('\n')]; + msg = [msg error sprintf('\n')]; + + + set(grid.Cells(i).result,'TooltipString',error); + grid.Cells(i).flag_cell(1); + else + set(grid.Cells(i).result,'TooltipString',''); + grid.Cells(i).flag_cell(0); + end + +end +end + diff --git a/@GUI/check_inputs.m b/@GUI/check_inputs.m new file mode 100644 index 0000000..770f1d5 --- /dev/null +++ b/@GUI/check_inputs.m @@ -0,0 +1,23 @@ + + + +%% check_inputs +% ensure that the inputs are proper variable names, and that the +% input string parses properly +% inputs: +% object:GUI - current GUI object +% outputs: +% error:string - error string if variable is not inputed properly +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function error = check_inputs(object) +parsed_input = EMLGenerator.parse_inputs(get(object.function_inputs_control,'string')); +error = []; +for i=1:size(parsed_input,2) + if(size(parsed_input{i},2) == 2) + if (strcmp(parsed_input{i}(2),'error')) + error = [error sprintf('%s is not a valid variable name\n',char(parsed_input{i}(1))) ]; + end + end +end +end diff --git a/@GUI/check_matlab_syntax_condition.m b/@GUI/check_matlab_syntax_condition.m new file mode 100644 index 0000000..78f40a2 --- /dev/null +++ b/@GUI/check_matlab_syntax_condition.m @@ -0,0 +1,64 @@ +%% check_matlab_syntax +% this function will check that a string is valid matlab syntax +% for the context that it is in. we need to build up the +% expression which involves initiallizeing the input variables to +% a dummy value and wraping an if statement around conditionals +% inputs: +% object:GUI - current GUI object +% string:string - string to be checked +% result:boolean - false if the string is a conditoin true if +% the string is an output statement +% outputs: +% error:string - string containing the error message, empty if +% there is no error +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function error = check_matlab_syntax_condition(object,string,result) +% split the list of inputs to get inputs seperatly + +parsed_input = EMLGenerator.parse_inputs(get(object.function_inputs_control,'string')); +check_string = []; + +% initialize inputs to zero +% functions are assumed to be total, so 0 is just for +% convienence +for i=1:size(parsed_input,2) + % set to zero + check_string = [check_string sprintf('%s=0;\n',char(parsed_input{i}(1)))]; + + +end + +if ~result + % the string is a condition we need to evaulate it as it + % will be used in the code, as in order for an if statement + % to be valid the condition must evaulate to a numeric + % value not a structure or something else. we need to have + % the 1 in there as a dummy output, which is necesary for + % an if statement to be valid in matlab. + check_string = [check_string 'if (' string sprintf(')\n1;\nend')]; +else + % the string is an output statement we can just evaulate the + % string on its own. + check_string = [check_string string ';' sprintf('\n')]; +end +% attempt to evaluate the string catch the error. +try + eval(check_string); + error = []; +catch exception + error = exception.message; + % attempt to make one of the common errors slightly less + % cryptic. + if(strcmp(exception.identifier,'MATLAB:m_invalid_lhs_of_assignment')) + error = [error sprintf('\nTo check equality use ==')]; + end +end +end + + + + + + + diff --git a/@GUI/check_output_consistent.m b/@GUI/check_output_consistent.m new file mode 100644 index 0000000..b7a5ad7 --- /dev/null +++ b/@GUI/check_output_consistent.m @@ -0,0 +1,41 @@ +%% check_output_consistent +% checks if the block has the correct number of outputs based on the +% output mode, checks that the outputs names are compatible witht the +% matlab spec for naming variables. +% inputs: +% object:GUI - gui object +% outputs: +% result:boolean - true if table consistent, false if not. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function result = check_output_consistent( object ) +output_block_types = object.output_data_type; + +output_table = {}; +if (object.multi_mode == 1) + for i=1:size(object.Grid1.cells,2) + parsed_output = EMLGenerator.parse_inputs(strtrim(char(object.Grid1.cells(i).cond_text))); + + output_table = [output_table {char(parsed_output{1}(1))}]; + + + end +else + output_table = {'output'}; +end + +if (size(output_block_types,1) ~= size(output_table,2)) + result = false; + return; +end + +for i=1:size(output_table,2) + if (~strcmp(output_block_types{i},output_table{i})) + result = false; + return; + end +end +result = true; + +end + diff --git a/@GUI/close_fig.m b/@GUI/close_fig.m new file mode 100644 index 0000000..3c58e27 --- /dev/null +++ b/@GUI/close_fig.m @@ -0,0 +1,31 @@ +%% close_fig +% callback function that is called whenever the close button is +% pressed. +% inputs: +% object - current GUI object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = close_fig(object,src,event) +if (object.validation_report_handle ~= 0) + delete(object.validation_report_handle); + object.validation_report_handle = 0; +end +object.save_data; +object.Data.open = 0; +object.Data.fig = []; +delete(object.fig); +% remove reference to the old figure. +object.fig = []; +% Purge unnecessary information from Data +object.Data.purge; +% in simulink mode +if(object.mode == 1) + parent = get_param(object.block_handle,'Parent'); + open_system(parent); +end +end + diff --git a/@GUI/compiled_types.m b/@GUI/compiled_types.m new file mode 100644 index 0000000..0f74e57 --- /dev/null +++ b/@GUI/compiled_types.m @@ -0,0 +1,31 @@ +function [ inputs, outputs ] = compiled_types( object ) +inputs = []; +outputs = []; +%try +eval([bdroot '([],[],[],''compile'')']); +%catch exception +% return; +%end +if (object.mode == 1) + S = sfroot; + code_block = sprintf('%s/code',getfullname(object.block_handle)); + code_blocks = find_system(getfullname(object.block_handle),'LookUnderMasks','all','BlockType','SubSystem','Name','code'); + if ~isempty(code_blocks) + myState = S.find('-isa','Stateflow.EMChart', '-and', 'Path', code_block); % find which one we want to edit + for (i=1:size(myState.Inputs,1)) + + inputs = [inputs;{myState.Inputs(i).Name, myState.Inputs(i).CompiledType}]; + + end + + for (i=1:size(myState.Outputs,1)) + + outputs = [outputs;{myState.Outputs(i).Name, myState.Outputs(i).CompiledType}]; + + end + +end +eval([bdroot '([],[],[],''term'')']); + +end + diff --git a/@GUI/create_std_text.m b/@GUI/create_std_text.m new file mode 100644 index 0000000..c2e2a8f --- /dev/null +++ b/@GUI/create_std_text.m @@ -0,0 +1,28 @@ +%% create_std_text +% function will create an edit text box used for conditons and +% results. we want these to be consistent so its easier for it to +% be in one function. +% inputs: +% obj:GUI - current GUI object +% Parent:double - handle to parent figure +% position:[double double double double] - position to place edit +% box in. +% outputs: +% control:double - handle pointing to newly created uicontrol +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function control = create_std_text(object, Parent, position) +control = uicontrol('style','edit',... + 'Parent',Parent,... + 'units','pix',... + 'position',position,... + 'min',0,'max',1,... % This is the key to multiline edits. + 'string',{''},... + 'Max',2.0,... + 'fontweight','bold',... + 'BackgroundColor',[1 1 1],... + 'horizontalalign','center',... + 'KeyPressFcn',@(src,event)textbox_callback(object,src,event),... + 'fontsize',11); +end + diff --git a/@GUI/cvc_ext_call.m b/@GUI/cvc_ext_call.m new file mode 100644 index 0000000..64aad6d --- /dev/null +++ b/@GUI/cvc_ext_call.m @@ -0,0 +1,39 @@ +function [] = cvc_ext_call( object,src,event ) +%CVC_EXT_CALL Summary of this function goes here +% Detailed explanation goes here + + +object.save_call([],[]); +object.save_data; +if (object.validation_report_handle ~= 0) + delete(object.validation_report_handle); + object.validation_report_handle = 0; +end +error = object.check_call([],2); + + +if (~error) + + [check,result] = object.CVC.cvc_check; + + if (check == 1) + msgbox('table is valid'); + elseif (check == 0 && strcmp(result,'canceled')) + return; + else + Valid_Report = ValidationReport(object); + Valid_Report.set_results(result); + Valid_Report.set_mode(1); + Valid_Report.init(); + end + object.pvs_checked = check; + object.update_Statusbar; + if (object.mode == 1) + + TableBlock.set_block_display(object.block_handle,object.pvs_checked); + end + +end +end + + diff --git a/@GUI/draw_allgrids.m b/@GUI/draw_allgrids.m new file mode 100644 index 0000000..4818736 --- /dev/null +++ b/@GUI/draw_allgrids.m @@ -0,0 +1,17 @@ +%% draw_allgrids +% function will call the draw methods for each of the 3 grids. +% inputs: +% obj:GUI - current GUI object +% load:tristate - 0 if grid is being refreshed, 1 if grid should reload +% data, 2 if the grid is being initialized. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = draw_allgrids(object,load) +object.draw_grid2(object.Grid2,load); +object.draw_grid1(object.Grid1,load); + +object.draw_grid0(object.Grid0,load); +end + diff --git a/@GUI/draw_grid0.m b/@GUI/draw_grid0.m new file mode 100644 index 0000000..580cba3 --- /dev/null +++ b/@GUI/draw_grid0.m @@ -0,0 +1,38 @@ +%% draw_grid0 +% function will draw the output grid onto the figure +% inputs: +% obj:GUI - current GUI object +% grid:Grid - grid to be drawn, should be grid on left. +% load:tristate - 0 if grid is being refreshed, 1 if grid should reload +% data, 2 if the grid is being initialized. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = draw_grid0(object,grid,load, init) +% ensure that the results grid is up to date. +grid.refresh(); +for i=1:size(grid.Cells,2) + % get the x coordinate from the associated top grid cell, + % get the y coordinate from the associated right grid cell. + pos1 = grid.Cells(i).Cell1.get_pos; + pos2 = grid.Cells(i).Cell2.get_pos; + pos = [0 0 0 0]; + pos(1) = pos1(1); + pos(2) = pos2(2); + pos(3) = pos1(3); + pos(4) = pos2(4); + if load == 2 || isempty(grid.Cells(i).result) || ~ishandle(grid.Cells(i).result) + + grid.Cells(i).result = object.create_std_text(object.fig,pos); + % if we are loading the cell, try to restore the text + % that was saved using save_results. + if load ~= 0 + set(grid.Cells(i).result,'String',grid.Cells(i).result_text); + end + else + set(grid.Cells(i).result,'position',pos); + end +end +end + diff --git a/@GUI/draw_grid1.m b/@GUI/draw_grid1.m new file mode 100644 index 0000000..01c99b0 --- /dev/null +++ b/@GUI/draw_grid1.m @@ -0,0 +1,88 @@ +%% draw_grid1 +% Draws the grid on the top onto the figure. the current +% assumption is that the top grid does not have any subgrids, +% inputs: +% obj:GUI - current GUI object +% grid:Grid - grid to be drawn, should be grid on top. +% load:tristate - 0 if grid is being refreshed, 1 if grid should reload +% data, 2 if the grid is being initialized. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = draw_grid1(object,grid,load) +% assumption grid 1 has no subgrids +pos = []; +for i=1:size(grid.cells,2) + % if we are in edit mode we need to shift over the cells to + % accomidate for the new grid buttons in the left grid. + if(object.edit == 1) + pb_space = grid.cells(i).grid_push_width; + else + pb_space = 0; + end + figpos = get(object.fig,'position'); + + % check if grid2 is empty, currently grid 2 will never be + % empty, may change in future though. + if (isempty(object.Grid2)) + pos = [grid.cells(i).condition_text_x grid.cells(i).condition_text_y grid.cells(i).condition_text_width grid.cells(i).condition_text_height]; + else + pos = [grid.cells(i).condition_text_x+grid.cells(i).condition_text_width*object.Grid2.max_width(1) figpos(4)-object.header_height-grid.cells(i).condition_text_y-grid.cells(i).condition_text_height grid.cells(i).condition_text_width grid.cells(i).condition_text_height]; + end + % set the x coordinate of the cell + pos(1) = pos(1) + (i-1)*grid.cells(i).condition_text_width + grid.cells(i).condition_text_offset + pb_space; + % if the edit box does not exist create it, if it does + % adjust it's position. + if (load == 2 || isempty(grid.cells(i).cond) || ~ishandle(grid.cells(i).cond)) + grid.cells(i).cond = object.create_std_text(object.fig,pos); + if (load ~= 0) + set(grid.cells(i).cond,'String',grid.cells(i).cond_text); + end + else + grid.cells(i).set_pos(pos); + end + + if(object.edit == 0) + string = get(grid.cells(i).cond,'String'); + if(isempty(string)) + set(grid.cells(i).cond,'Visible','off'); + end + else + set(grid.cells(i).cond,'Visible','on'); + end +end +% if we are in edit mode, draw the new and delete buttons at +% the right of the last cell +if( object.edit == 1) + pos(1) = pos(1) + pos(3); + pos(2) = pos(2) + 20; + pos(4) = 20; + pos(3) = 60; + grid.set_pb(object.fig,pos); + pos(2) = pos(2) - 20; + + grid.set_delete_pb(object.fig,pos); + set(grid.delete_cell_pb,'userdata',object); + set(grid.new_cell_pb,'userdata',object); +else + delete(grid.new_cell_pb); + grid.new_cell_pb = []; + delete(grid.delete_cell_pb) + grid.delete_cell_pb = []; +end +if object.edit ==1 || load ~= 0 + fig_pos = get(object.fig,'position'); + if(pos(1)+pos(3)>fig_pos(3)) + fig_pos(3) = pos(1)+pos(3); + set(object.fig,'position',fig_pos); + elseif (pos(1) + pos(3)object.fig_width) + fig_pos(3) = pos(1)+pos(3); + set(object.fig,'position',fig_pos); + end +end +end + diff --git a/@GUI/draw_grid2.m b/@GUI/draw_grid2.m new file mode 100644 index 0000000..6d78fd8 --- /dev/null +++ b/@GUI/draw_grid2.m @@ -0,0 +1,166 @@ +%% draw_grid2 +% Draws the grid on the left onto the figure. +% inputs: +% obj:GUI - current GUI object +% grid:Grid - grid to be drawn, should be grid on left. +% load:tristate - 0 if grid is being refreshed, 1 if grid should reload +% data, 2 if the grid is being initialized. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = draw_grid2(object,grid,load) +if (~isempty(grid)) + % generate a random pastel colour for the background, each + % grid has a different colour to help with readability + grid_color = [0.9+0.1*rand(1) 0.9+0.1*rand(1) 0.9+0.1*rand(1)]; + for i=1:size(grid.cells,2) + % check if the grid is the root grid + if (~isempty(grid.parent_cell)) + % grid is not the root grid location is derived + % from its parent. + parent_pos = grid.parent_cell.get_pos; + if i == 1 + % if we are at the first cell, location is the + % same as the parent but shifted to the right + % by one cell + pos(3) = grid.cells(i).width * grid.cells(i).condition_text_width; + pos(4) = grid.cells(i).height * grid.cells(i).condition_text_height; + pos(1) = parent_pos(1) + parent_pos(3); + pos(2) = parent_pos(2) + parent_pos(4) - pos(4); + else + % if we are not at the first cell, location is + % the same as the previous cell but we shift + % down by one cell + prev_pos = grid.cells(i-1).get_pos; + pos(3) = grid.cells(i).width * grid.cells(i).condition_text_width; + pos(4) = grid.cells(i).height * grid.cells(i).condition_text_height; + pos(1) = parent_pos(1) + parent_pos(3); + pos(2) = prev_pos(2) - pos(4); + grid_color = grid.cells(i-1).color; + + end + else + % grid is the root grid. + % position of the first cell is based on + % condition_text_x, and condition_text_y, as well + % as the height of the figure and header. + figpos = get(object.fig,'position'); + pos = [grid.cells(i).condition_text_x figpos(4)-object.header_height-grid.cells(i).condition_text_y grid.cells(i).condition_text_width grid.cells(i).condition_text_height]; + if i == 1 + pos(1) = pos(1); + pos(4) = grid.cells(i).height * grid.cells(i).condition_text_height; + + pos(2) = pos(2)-pos(4)-grid.cells(i).condition_text_height-grid.cells(i).condition_text_offset; + pos(3) = grid.cells(i).width * grid.cells(i).condition_text_width; + pos(4) = grid.cells(i).height * grid.cells(i).condition_text_height; + else + prev_pos = grid.cells(i-1).get_pos; + pos(3) = grid.cells(i).width * grid.cells(i).condition_text_width; + pos(4) = grid.cells(i).height * grid.cells(i).condition_text_height; + pos(1) = pos(1); + pos(2) = prev_pos(2) - pos(4); + grid_color = grid.cells(i-1).color; + end + end + + + % if the edit box does not exist, ie. it is just being + % created or we are loading the figure + if (load == 2 || isempty(grid.cells(i).cond) || ~ishandle(grid.cells(i).cond)) + % create the new edit box + grid.cells(i).cond = object.create_std_text(object.fig,pos); + % if cell is the first in the grid use the new + % colour, else take the colour of the previous cell + % in the grid. + if(i==1) + set(grid.cells(i).cond,'BackgroundColor',grid_color); + else + set(grid.cells(i).cond,'BackgroundColor',get(grid.cells(i-1).cond,'BackgroundColor')) + end + grid.cells(i).color = grid_color; + % if we are loading the cell set the string of the + % edit box to be the value that we saved as a + % result of calling save_conditions + if (load ~= 0) + set(grid.cells(i).cond,'String',grid.cells(i).cond_text); + end + else + % if the edit box is already created change is + % position to newly determined position. + grid.cells(i).set_pos(pos); + end + % determine if we want to draw the new subgrid buttons, + % which is located to the right of each of the leaf + % cells. + if(grid.cells(i).pb_flag == 1 && object.edit == 1) + pb_pos = pos; + pb_pos(1) = pos(1)+pos(3); + pb_pos(3) = grid.cells(i).grid_push_width; + if (ishghandle(grid.cells(i).grid_pb)) + set(grid.cells(i).grid_pb,'Visible','on'); + end + grid.cells(i).set_pb(object.fig,pb_pos); + set(grid.cells(i).grid_pb,'UserData',object); + elseif(grid.cells(i).pb_flag == 1 && object.edit ~= 1) + if (ishghandle(grid.cells(i).grid_pb)) + set(grid.cells(i).grid_pb,'Visible','off'); + end + end + + delete_pb_pos = []; + + + % detemine if we want to draw the new cell buttons, + % which are located at the botton of the set of cells. + if (i == size(grid.cells,2) && object.edit == 1) + new_pb_pos = pos; + new_pb_pos(4) = grid.cells(i).condition_text_height/2; + new_pb_pos(3) = pos(3)/2; + new_pb_pos(2) = pos(2) - new_pb_pos(4); + if (ishghandle(grid.new_cell_pb)) + set(grid.new_cell_pb,'Visible','on'); + end + grid.set_pb(object.fig,new_pb_pos); + set(grid.new_cell_pb,'userdata',object); + + + delete_pb_pos = new_pb_pos; + delete_pb_pos(1) = new_pb_pos(1) + new_pb_pos(3); + if (ishghandle(grid.delete_cell_pb)) + set(grid.delete_cell_pb,'Visible','on'); + end + grid.set_delete_pb(object.fig,delete_pb_pos); + set(grid.delete_cell_pb,'userdata',object); + elseif (i == size(grid.cells,2) && object.edit ~= 1) + + if (ishghandle(grid.new_cell_pb)) + set(grid.new_cell_pb,'Visible','off'); + end + + if (ishghandle(grid.delete_cell_pb)) + set(grid.delete_cell_pb,'Visible','off'); + end + end + + + + % recursively draw the subgrid of the cell if it + % exists. + object.draw_grid2(grid.cells(i).subgrid,load); + + if(object.edit == 0) + string = get(grid.cells(i).cond,'String'); + if(isempty(string)) + set(grid.cells(i).cond,'Visible','off'); + end + else + set(grid.cells(i).cond,'Visible','on'); + end + + end + + +end +end + diff --git a/@GUI/edit_tog_call.m b/@GUI/edit_tog_call.m new file mode 100644 index 0000000..a21215b --- /dev/null +++ b/@GUI/edit_tog_call.m @@ -0,0 +1,23 @@ +%% edit_tog_call +% callback function for when the edit button is clicked. when +% edit is toggled we want to redraw the table with the edit +% button visible or not visible +% inputs: +% object - current GUI object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = edit_tog_call(object,src,event) +% save the value of the edit toggle +value = get(src,'Value'); +object.edit = value; +% reset the widths and heights of the grid then redraw all the +% grids. +object.reset_wh; +object.draw_allgrids(0); + +end + diff --git a/@GUI/evaluate_counter.m b/@GUI/evaluate_counter.m new file mode 100644 index 0000000..ba4308d --- /dev/null +++ b/@GUI/evaluate_counter.m @@ -0,0 +1,19 @@ +%% evaluate_counter +% function will call the evaluation function for a given counter +% example. +% inputs: +% object:GUI - current GUI object +% counter:string - string representing the counter example, ie. +% 'x = 3\ny = 5' +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = evaluate_counter(object,counter) + +problem = object.evaluate_counter_grid(object.Grid2, counter); +if(~problem && object.multi_mode == 0) + object.evaluate_counter_grid(object.Grid1, counter); +end +end + diff --git a/@GUI/evaluate_counter_grid.m b/@GUI/evaluate_counter_grid.m new file mode 100644 index 0000000..360a7d9 --- /dev/null +++ b/@GUI/evaluate_counter_grid.m @@ -0,0 +1,97 @@ +%% evaluate_counter_grid +% function will evaluate a counter example for a given grid. +% inputs: +% object:GUI - current GUI object +% grid:Grid - the grid to evaluate +% counter:string - string representing the counter example, ie. +% 'x = 3\ny = 5' +% outputs: +% problem:boolean - 1 if grid has overlapping or underspecified +% cells, 0 if not. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function problem = evaluate_counter_grid(object,grid,counter) +% split the list of inputs to get inputs seperatly +inputs = get(object.function_inputs_control,'String'); +inputs2 = []; +for i=1:size(inputs,1) + inputs2 = [inputs2 inputs(i,:)]; +end +inputs2 = regexprep(inputs2,'\s',''); +inputs = regexp(inputs2,',','split'); +check_string = []; + +% keep track of the number of condtitions that evaulate to true +true_conds = 0; +sub_problem = 0; +problem = 0; +empty_cell = 0; +% initialize inputs to zero +% functions are assumed to be total, so 0 is just for +% convienence +for i=1:size(inputs,2) + % set to zero + + %need to parse the types out of the inputs + inputi = regexp(char(inputs(i)),'\w*','match','once'); + check_string = [check_string sprintf('%s=0;\n',char(inputi))]; +end + +check_string = [check_string counter sprintf('\n')]; +for i=1:size(grid.cells,2) + condition_string = get(grid.cells(i).cond,'string'); + + if size(condition_string,1) > 0 + s = [condition_string(1,:)]; + for j = 2:size(condition_string,1) + s = [s ' ' condition_string(j,:)]; + end + condition_string = s; + end + + if(~isempty(condition_string)) + + eval([check_string 'result =(' char(condition_string) ');']) + if(result == 0) + grid.cells(i).flag_cell(1); + else + true_conds = true_conds + 1; + + grid.cells(i).flag_cell(2); + end + else + empty_cell = 1; + end +end + +if (true_conds == 1) + for i=1:size(grid.cells,2) + condition_string = get(grid.cells(i).cond,'string'); + if(~isempty(condition_string)) + + eval([check_string 'result =(' char(condition_string) ');']) + if(result == 0) + grid.cells(i).flag_cell(1); + else + + if (~isempty(grid.cells(i).subgrid)) + sub_problem = object.evaluate_counter_grid(grid.cells(i).subgrid,counter); + end + grid.cells(i).flag_cell(2); + end + else + empty_cell = 1; + end + end +end + + +if (true_conds ~= 1 || sub_problem == 1) + problem = 1; +end + +if (empty_cell) + problem = 0; +end + +end \ No newline at end of file diff --git a/@GUI/help_call.m b/@GUI/help_call.m new file mode 100644 index 0000000..cc70433 --- /dev/null +++ b/@GUI/help_call.m @@ -0,0 +1,12 @@ +%% help_call +% opens up the help browser and displays the help file for this program +% inputs: +% object:PVS_checker - PVS_checker object +% outputs: +% status:boolean - 0 if pvs file has been checked, 1 if it has +% not +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = help_call(object,src,event) + web(fullfile(fileparts(which('TTdiag')),'html','html','TT_help.html'),'-helpbrowser'); +end \ No newline at end of file diff --git a/@GUI/init.m b/@GUI/init.m new file mode 100644 index 0000000..24525d1 --- /dev/null +++ b/@GUI/init.m @@ -0,0 +1,222 @@ +%% init +% initialize the gui +% inputs: +% obj:GUI - GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = init(object) + +% create the handles for the gui objects +if object.mode == 1 + name = get_param(object.block_handle,'Name'); +elseif object.mode == 0 + name = 'Table Tool'; +end +% main figure +object.fig = figure('units','pixels',... + 'position',[0 0 object.fig_width object.fig_height],... + 'menubar','none',... + 'name','Table Tool',... + 'numbertitle','off',... + 'resize','on',... + 'Name',name,... + 'CloseRequestFcn',@(src,event)close_fig(object,src,event),... + 'ResizeFcn',@(src,event)resize_fig(object,src,event)); + + +% edit button +object.edit_tog = uicontrol('style','toggle',... + 'units','pix',... + 'string','Edit',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'Value',object.edit,... + 'callback',@(src,event)edit_tog_call(object,src,event)); + +% Save button +object.save_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Save',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)save_call(object,src,event)); + +% Close button +object.close_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Close',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)close_fig(object,src,event)); + +% Save external button +object.save_ext_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Save Ext',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)save_ext_call(object,src,event)); + + +% Check button +object.check_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Syntax',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'Max',2.0,... + 'callback',@(src,event)check_call(object,src,event)); + + + +% PVS button +object.pvs_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Typecheck',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)typecheck_call(object,src,event)); + +% Input/Output button +object.input_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Ports',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)input_call(object,src,event)); + +% Settings button +object.settings_pb = uicontrol('style','push',... + 'units','pix',... + 'string','Settings',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)settings_call(object,src,event)); + +% Expression Name Label +object.name_label = uicontrol('style','text',... + 'string','Expression Name',... + 'HorizontalAlign','right',... + 'BackgroundColor',get(object.fig,'Color')); + +% Expression Name Edit box +object.function_name_control = uicontrol('style','edit',... + 'units','pix',... + 'Parent',object.fig,... + 'HorizontalAlign','center',... + 'FontWeight','bold',... + 'FontSize',12,... + 'Max',2.0,... + 'KeyPressFcn',@(src,event)textbox_callback(object,src,event),... + 'BackgroundColor',[1 1 1]); + +% input list label +object.input_label = uicontrol('style','text',... + 'string','Inputs',... + 'HorizontalAlign','right',... + 'BackgroundColor',get(object.fig,'Color')); + +% input list edit box +object.function_inputs_control = uicontrol('style','edit',... + 'units','pix',... + 'Parent',object.fig,... + 'HorizontalAlign','center',... + 'FontWeight','bold',... + 'Max',2.0,... + 'FontSize',12,... + 'KeyPressFcn',@(src,event)textbox_callback(object,src,event),... + 'BackgroundColor',[1 1 1]); + + + +% load the function name and inputs +if (~isempty(object.function_name_text)) + set(object.function_name_control,'String',object.function_name_text); +end +if (~isempty(object.function_inputs_text)) + set(object.function_inputs_control,'String',object.function_inputs_text); +end + + +% Set up Menu +filemenu = uimenu('Label','File'); +editmenu = uimenu('Label','Edit'); +checkmenu = uimenu('Label','Typecheck'); +helpmenu = uimenu('Label','Help'); +uimenu(filemenu,'Label','New','Accelerator','n','Callback',@(src,event)new_call(object,src,event)); +uimenu(filemenu,'Label','Open...','Callback',@(src,event)open_call(object,src,event)); +uimenu(filemenu,'Label','Save to Block','Separator','on','Accelerator','s','Callback',@(src,event)save_call(object,src,event)); +uimenu(filemenu,'Label','Save to M-File','Callback',@(src,event)save_ext_call(object,src,event)); +uimenu(filemenu,'Label','Close','Accelerator','w','Separator','on','Callback',@(src,event)close_fig(object,src,event)); +object.undo_opt = uimenu(editmenu,'Label','Undo','Accelerator','z','Callback',@(src,event)undo_call(object,src,event)); +object.redo_opt = uimenu(editmenu,'Label','Redo','Accelerator','r','Callback',@(src,event)redo_call(object,src,event)); +uimenu(editmenu,'Label','Show edit controls','Checked','on','Separator','on'); +uimenu(editmenu,'Label','Ports and Data Manager','Accelerator','p','Callback',@(src,event)input_call(object,src,event)); +multi_mode_menu = uimenu(editmenu,'Label','Output Mode'); +object.multi_opt_reg = uimenu(multi_mode_menu,'Label','One Output','Callback',@(src,event)multi_select_call(object,src,event)); +object.multi_opt_out = uimenu(multi_mode_menu,'Label','Multiple Outputs','Callback',@(src,event)multi_select_call(object,src,event)); +uimenu(checkmenu,'Label','Typecheck','Accelerator','t','Callback',@(src,event)typecheck_call(object,src,event)); +prover_menu = uimenu(checkmenu,'Label','Default Prover'); +object.prover_opt_cvc = uimenu(prover_menu,'Label','CVC3','Callback',@(src,event)prover_select_call(object,src,event)); +object.prover_opt_pvs = uimenu(prover_menu,'Label','PVS','Callback',@(src,event)prover_select_call(object,src,event)); +uimenu(checkmenu,'Label', 'Syntax Check','Callback',@(src,event)check_call(object,src,event)); + + +uimenu(checkmenu,'Label','CVC Typecheck','Separator','on','Callback',@(src,event)cvc_ext_call(object,src,event)); +uimenu(checkmenu,'Label','CVC Generate File'); + +uimenu(checkmenu,'Label','PVS Typecheck','Separator','on','Callback',@(src,event)pvs_ext_call(object,src,event)); +uimenu(checkmenu,'Label','PVS Settings','Callback',@(src,event)settings_call(object,src,event)); +uimenu(checkmenu,'Label','PVS Check Status','Callback',@(src,event)prf_file_call(object,src,event)); +uimenu(checkmenu,'Label','PVS Generate file','Callback',@(src,event)pvs_file_call(object,src,event)); +uimenu(checkmenu,'Label','PVS Typecheck SimTypes','Callback',@(src,event)pvs_ext_call_sim(object,src,event)); + +uimenu(helpmenu,'Label','Product Help','Callback',@(src,event)help_call(object,src,event)); +uimenu(helpmenu,'Label','About Tabular Expression Toolbox','Callback',@(src,event)about_call(object,src,event)); + +object.set_command_pos; +object.reset_wh(); +object.draw_allgrids(2); +object.saved = 1; +object.setPBenable; + +object.default_prover = object.CVC_const; + + +object.settings = TTSettings(); +if isfield(object.Data.settings,'set') + object.settings.setvalues(object.Data.settings); +else + object.settings.init(); + +end + +object.undo_man = UndoManager(); + + + +object.update_Statusbar; +object.update_multi_check_status; +object.update_prover_check_status; +object.update_undoredo; + +object.PVS = PVS_checker(object.Data); +object.EMLGen = EMLGenerator(object.Data); + + +object.CVC = CVC_checker(object.Data); + + +object.initialized = 1; +object.Data.open = 1; +object.Data.fig = object.fig; + + + + +end + + + diff --git a/@GUI/input_call.m b/@GUI/input_call.m new file mode 100644 index 0000000..79d432e --- /dev/null +++ b/@GUI/input_call.m @@ -0,0 +1,23 @@ +%% input_call +% function will open up the ports and data management window if +% in simulink mode. +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = input_call(object,src,event) +% make sure in simulink mode. +if object.mode == 1 + eml_handle = object.save_call([],[]); + currentDir = pwd; + cd([matlabroot filesep 'toolbox' filesep 'stateflow' filesep 'stateflow' filesep 'private']); + fHandle = @eml_man; + cd(currentDir); + fHandle('edit_data_ports', sf('get', get_param(char(eml_handle),'UserData'), '.chart')); +end +end + diff --git a/@GUI/input_data_type.m b/@GUI/input_data_type.m new file mode 100644 index 0000000..1e39c7a --- /dev/null +++ b/@GUI/input_data_type.m @@ -0,0 +1,38 @@ +%% input_data_type +% this function will determine what the desired output type of +% the function is, based on what the user has selected using the +% ports and datamanagement window. if the user has selected an +% unconvertable type, (inheret, fixed pt. etc.) it will return +% the empty string +% inputs: +% object:GUI - GUI objecto +% outputs: +% type:string - string representation of the output type. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function types = input_data_type(object) +types = []; +if (object.mode == 1) + + S = sfroot; + code_block = sprintf('%s/code',getfullname(object.block_handle)); + code_blocks = find_system(getfullname(object.block_handle),'LookUnderMasks','all','BlockType','SubSystem','Name','code'); + if ~isempty(code_blocks) + myState = S.find('-isa','Stateflow.EMChart', '-and', 'Path', code_block); % find which one we want to edit + for (i=1:size(myState.Inputs,1)) + if strncmp(myState.Inputs(i).DataType,'Inherit',7); + typename = 'Inherit'; + elseif strncmp(myState.Inputs(i).DataType,'boolean',7); + typename = 'logical'; + else + typename = myState.Inputs(i).DataType; + end + types = [types;{myState.Inputs(i).Name, typename}]; + end + else + types = []; + end +else + types = []; +end +end diff --git a/@GUI/msgbox_scroll.m b/@GUI/msgbox_scroll.m new file mode 100644 index 0000000..4874a1f --- /dev/null +++ b/@GUI/msgbox_scroll.m @@ -0,0 +1,28 @@ +%% msgbox_scroll +% create a message box with a scrollable text area +% inputs: +% msg:string - string to put into the message box +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = msgbox_scroll(msg) +fig = figure('units','pixels',... + 'position',[0 0 700 500],... + 'menubar','none',... + 'name','PVS Report',... + 'numbertitle','off'); + +uicontrol('style','edit',... + 'units','pix',... + 'Parent',fig,... + 'HorizontalAlign','center',... + 'FontWeight','bold',... + 'FontSize',12,... + 'Max',2.0,... + 'HorizontalAlign','left',... + 'String',msg,... + 'Position',[1 1 698 498],... + 'BackgroundColor',[1 1 1]); + +end \ No newline at end of file diff --git a/@GUI/multi_select_call.m b/@GUI/multi_select_call.m new file mode 100644 index 0000000..4621f57 --- /dev/null +++ b/@GUI/multi_select_call.m @@ -0,0 +1,21 @@ +%% multi_select_call +% called whenever a user selects an output mode, one versus multi +% inputs: +% object:GUI - GUI handle +% src - calling object +% event - event data +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = multi_select_call(object,src,event) +label = get(src,'Label'); +% determine which label the user clicked on +if strcmp(label,'Multiple Outputs') + object.multi_mode = 1; +else + object.multi_mode = 0; +end + +object.update_multi_check_status; +end \ No newline at end of file diff --git a/@GUI/new_call.m b/@GUI/new_call.m new file mode 100644 index 0000000..47ed348 --- /dev/null +++ b/@GUI/new_call.m @@ -0,0 +1,16 @@ + +%% new_call +% callback for new button +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = new_call(object,src,event) +TableToolMatlab; +end + + diff --git a/@GUI/open_call.m b/@GUI/open_call.m new file mode 100644 index 0000000..1729da7 --- /dev/null +++ b/@GUI/open_call.m @@ -0,0 +1,18 @@ +%% open_call +% callback for the open option, will show a file picker and +% attempt to load the file into a new window. +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = open_call(object,src,event) +[FileName, PathName, FilterIndex] = uigetfile('*.table','Select pvs files'); +if ~isempty(FileName) + TTdiag('Load',[PathName FileName]); +end +end + diff --git a/@GUI/output_data_type.m b/@GUI/output_data_type.m new file mode 100644 index 0000000..03b862c --- /dev/null +++ b/@GUI/output_data_type.m @@ -0,0 +1,41 @@ +%% output_data_type +% this function will determine what the desired output type of +% the function is, based on what the user has selected using the +% ports and datamanagement window. if the user has selected an +% unconvertable type, (inheret, fixed pt. etc.) it will return +% the empty string +% inputs: +% object:GUI - GUI objecto +% outputs: +% type:string - string representation of the output type. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function types = output_data_type(object) +types = []; +if (object.mode == 1) + S = sfroot; + code_block = sprintf('%s/code',getfullname(object.block_handle)); + code_blocks = find_system(getfullname(object.block_handle),'LookUnderMasks','all','BlockType','SubSystem','Name','code'); + if ~isempty(code_blocks) + myState = S.find('-isa','Stateflow.EMChart', '-and', 'Path', code_block); % find which one we want to edit + for (i=1:size(myState.Outputs,1)) + + if strncmp(myState.Outputs(i).DataType,'Inherit',7); + typename = 'Inherit'; + elseif strncmp(myState.Outputs(i).DataType,'boolean',7); + typename = 'logical'; + else + typename = myState.Outputs(i).DataType; + end + types = [types;{myState.Outputs(i).Name, typename}]; + + end + else + types = []; + + end +else + types = []; +end +end + diff --git a/@GUI/prf_file_call.m b/@GUI/prf_file_call.m new file mode 100644 index 0000000..24d49e6 --- /dev/null +++ b/@GUI/prf_file_call.m @@ -0,0 +1,67 @@ +%% prf_file_call +% callback for the check status menu option, this function will +% check the current status of the table, if the table has been +% proven it will alert the user and update the status, if it has +% not been proven it will alert the user. +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = prf_file_call(object,src,event) +object.save_data; +% check if a pvs file exists +if (~exist([object.Data.function_name '.pvs'],'file')) + errordlg(['PVS theory file for this function does not exist' sprintf('\n') 'Nothing to check']); + return; +end +% check if prf file exists +if (~exist([object.Data.function_name '.prf'],'file')) + errordlg(['PVS proof (.prf) file for this function does not exist' sprintf('\n') 'Nothing to check']); + return; +end +% check if pvs file is different from current table +temp_pvs = [object.Data.function_name '_temp']; +object.PVS.generate_pvs_file(temp_pvs); + +% read pvs theory on file +pvs1 = textread([object.Data.function_name '.pvs'], '%s', 'whitespace', '', 'bufsize', 268435456); +pvs2 = textread([temp_pvs '.pvs'], '%s', 'whitespace', '', 'bufsize', 268435456); + +if(size(pvs1{1},2) ~= size(pvs2{1},2)) + errordlg(['pvs-theory file is different from the given graphical representation, ' sprintf('\n') ' you will need to reprove']); + return; +else + + if ~all(pvs1{1} == pvs2{1}) + errordlg(['pvs-theory file is different from the given graphical representation, ' sprintf('\n') ' you will need to reprove']); + return; + end + + +end +delete([temp_pvs '.pvs']); + + +status = object.PVS.check_status; +if (status ~= object.pvs_checked) + + object.pvs_checked = status; + object.update_Statusbar; + if (object.mode == 1) + TableBlock.set_block_display(object.block_handle,object.pvs_checked); + end + +end + +if (status == 1) + msgbox('Table has been proven'); +else + msgbox('Table has not been proven'); +end + +end + diff --git a/@GUI/prover_select_call.m b/@GUI/prover_select_call.m new file mode 100644 index 0000000..42a180c --- /dev/null +++ b/@GUI/prover_select_call.m @@ -0,0 +1,11 @@ +function [] = prover_select_call(object,src,event) +label = get(src,'Label'); +% determine which label the user clicked on +if strcmp(label,'CVC3') + object.default_prover = object.CVC_const; +else + object.default_prover = object.PVS_const; +end + +object.update_prover_check_status; +end \ No newline at end of file diff --git a/@GUI/pvs_ext_call.m b/@GUI/pvs_ext_call.m new file mode 100644 index 0000000..b9d8559 --- /dev/null +++ b/@GUI/pvs_ext_call.m @@ -0,0 +1,51 @@ +%% pvs_ext_call +% function will initiate the typechecking procedure for the table +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pvs_ext_call(object,src,event) +object.save_call([],[]); +object.save_data; +if (object.validation_report_handle ~= 0) + delete(object.validation_report_handle); + object.validation_report_handle = 0; +end +error = object.check_call([],2); + +if(object.multi_mode == 0) + object.PVS.output_type = object.output_data_type; + + object.PVS.input_type = object.input_data_type; + + +end + +object.PVS.type_mode = 0; + +if (~error) + [check,result] = object.PVS.pvs_check; + if (check == 1) + msgbox('table is valid'); + elseif (check == 0 && strcmp(result,'canceled')) + return; + else + Valid_Report = ValidationReport(object); + Valid_Report.set_results(result); + Valid_Report.set_mode(0); + Valid_Report.init(); + end + object.pvs_checked = check; + object.update_Statusbar; + if (object.mode == 1) + + TableBlock.set_block_display(object.block_handle,object.pvs_checked); + end +end + +end + diff --git a/@GUI/pvs_ext_call_sim.m b/@GUI/pvs_ext_call_sim.m new file mode 100644 index 0000000..e43d8ba --- /dev/null +++ b/@GUI/pvs_ext_call_sim.m @@ -0,0 +1,58 @@ +function [ ] = pvs_ext_call_sim( object, event, src ) +%PVS_EXT_CALL_SIM Summary of this function goes here +% Detailed explanation goes here +object.save_call([],[]); +object.save_data; + +if (object.validation_report_handle ~= 0) + delete(object.validation_report_handle); +end +error = object.check_call; + + [object.PVS.input_type,object.PVS.output_type] = object.compiled_types; + %[is, os] = object.compiled_types; + %object.PVS.output_type = object.output_data_type; + + %object.PVS.input_type = object.input_data_type; + + +object.PVS.type_mode = 1; + + +% copy pvs theory to pwd +copyfile(fullfile(fileparts(which('TTdiag')),'PVS_theories','matlab_types.pvs'),pwd); + +% inputs = regexp(object.Data.function_inputs,',','split'); +% for i=1:size(inputs,2) +% varname = regexp(inputs(i),':','split'); +% for j=1:size(is,2) +% if(strcmp(varname(1),is(j)) +% inputs(i)=PVS_Checker.replace_types_sim(inputs(i) +% end +% end +% end + +if (~error) + [check,result] = object.PVS.pvs_check; + if (check == 1) + msgbox('table is valid'); + elseif (check == 0 && strcmp(result,'canceled')) + return; + else + Valid_Report = ValidationReport(object); + Valid_Report.set_results(result); + Valid_Report.set_mode(0); + Valid_Report.init(); + end + object.pvs_checked = check; + object.update_Statusbar; + if (object.mode == 1) + + TableBlock.set_block_display(object.block_handle,object.pvs_checked); + end +end + +end + + + diff --git a/@GUI/pvs_file_call.m b/@GUI/pvs_file_call.m new file mode 100644 index 0000000..9ea3d9c --- /dev/null +++ b/@GUI/pvs_file_call.m @@ -0,0 +1,18 @@ +%% pvs_file_call +% callback for the generate pvs file button, generates a pvs file +% for the table, does not attempt to prove, overwrites. +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pvs_file_call(object,src,event) +object.save_data; +object.PVS.generate_pvs_file(object.Data.function_name); + + +end + diff --git a/@GUI/redo_call.m b/@GUI/redo_call.m new file mode 100644 index 0000000..58b9230 --- /dev/null +++ b/@GUI/redo_call.m @@ -0,0 +1,48 @@ +%% redo_call +% called when user selects redo, calls undomanager and performs action +% inputs: +% object - GUI object +% src - source object +% event - event data +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = redo_call(object,src,event) + +recalled_data = object.undo_man.redo; +if isempty(recalled_data); + return; +else + switch recalled_data.action + case 1 + try + set(recalled_data.cell,'String',recalled_data.text); + catch exception + end + case 2 + recalled_data.grid.pb_new_call(recalled_data.grid.new_cell_pb,1); + case 3 + recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1); + case 4 + % readd grid deleted with undo + recalled_data.cell.subgrid = recalled_data.grid; + recalled_data.cell.subgrid = recalled_data.grid; + recalled_data.cell.pb_flag = 0; + if(~isempty(recalled_data.cell.parent_grid.rGrid)) + recalled_data.cell.parent_grid.rGrid.delete_g2s(recalled_data.cell); + end + if(~isempty(recalled_data.grid.rGrid)) + recalled_data.grid.rGrid.refresh; + end + object.reset_wh(); + object.draw_allgrids(1); + + + case 5 + recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1); + end +end +object.update_undoredo; + +end \ No newline at end of file diff --git a/@GUI/reset_wh.m b/@GUI/reset_wh.m new file mode 100644 index 0000000..d3fa202 --- /dev/null +++ b/@GUI/reset_wh.m @@ -0,0 +1,16 @@ +%% reset_wh +% function will call the set_widths and set_heights methods on +% the left grid in the table. The height and width values are +% used to draw the grid. +% inputs: +% obj:GUI - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = reset_wh(object) +width = object.Grid2.max_width(1); +object.Grid2.set_widths(width); +object.Grid2.set_heights(object.edit); +end + diff --git a/@GUI/resize_fig.m b/@GUI/resize_fig.m new file mode 100644 index 0000000..e56960b --- /dev/null +++ b/@GUI/resize_fig.m @@ -0,0 +1,19 @@ +%% resize_fig +% callback function that is called whenever the main figure is +% resized. Ensures that the commands remain at the top of the +% screen and the grid below them. +% inputs: +% object:GUI - current GUI object +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = resize_fig(object,src,event) +if(object.initialized == 1) + object.draw_allgrids(0); + object.set_command_pos; +end +end + diff --git a/@GUI/save_call.m b/@GUI/save_call.m new file mode 100644 index 0000000..def7f8e --- /dev/null +++ b/@GUI/save_call.m @@ -0,0 +1,73 @@ +%% save_call +% callback function that is called whenever the save button is +% pressed. This function will generate code and store it in the +% embedded matlab block, it will then generate the corresponding +% input and output ports and connect them to the embedded matlab +% block. +% inputs: +% object:GUI - current GUI object +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function eml_handle = save_call(object,src,event) +if(object.check_call([],[]) == 1) + return; +end + +function_names = EMLGenerator.parse_inputs(get(object.function_name_control,'String')); +function_name = char(function_names{1}(1)); +object.save_data; +if object.mode == 0 + model = gcs; + %make sure we are not looking at the library model + %create a new model + found = any(ismember(find_system('type', 'block_diagram'),'Table')); + if found == 0 + + + new_system('Table','Model'); + + end + model = 'Table'; + open_system(model); + load_system('TableLibrary'); + new_block = add_block('TableLibrary/Tabular Expression',[model '/' function_name]); + set_param(new_block,'UserData',object.Data); + set_param(new_block, 'UserDataPersistent', 'on'); + object.mode = 1; + object.block_handle = new_block; + object.save_call([],[]); +elseif object.mode == 1 + + load_system('simulink'); + % generate the code + redo = object.check_output_consistent; + if redo + object.EMLGen.set_datatype(object.output_data_type); + else + object.EMLGen.set_datatype([]); + end + code = object.EMLGen.generate_eml_code; + + + eml_handle = TableBlock.set_code(object.block_handle,code,function_name); + + + + if (object.mode == 1) + + TableBlock.set_block_display(object.block_handle,object.pvs_checked); + end + + if ~redo + object.save_call([],[]); + end + %[inputs, outputs] = object.compiled_types +end +end + + + diff --git a/@GUI/save_conditions.m b/@GUI/save_conditions.m new file mode 100644 index 0000000..ffc704f --- /dev/null +++ b/@GUI/save_conditions.m @@ -0,0 +1,23 @@ +%% save_conditions +% this function is used to save the strings that are in each of the +% condition edit boxes string field. We do this because when we +% want to reopen the gui we want to repopulate these fields but the +% handles to the edit boxes will disappear when we close the gui, +% so we need to save the strings into variables in each of the Cell +% objects. function is recursive. +% inputs: +% obj:GUI - current GUI object +% grid:Grid - grid to be saved. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = save_conditions(object,grid) +for i=1:size(grid.cells,2) + if ~isempty(grid.cells(i).subgrid) + object.save_conditions(grid.cells(i).subgrid); + end + grid.cells(i).cond_text = get(grid.cells(i).cond,'String'); +end +end + diff --git a/@GUI/save_data.m b/@GUI/save_data.m new file mode 100644 index 0000000..52c555b --- /dev/null +++ b/@GUI/save_data.m @@ -0,0 +1,30 @@ +%% save_data +% save the current state of the table to the data object so that +% it can be saved either in a block or in a binary file +% inputs: +% object:GUI - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = save_data(object) +save_conditions(object,object.Grid2); +save_conditions(object,object.Grid1); +save_results(object,object.Grid0); +% depricated +object.function_name_text = get(object.function_name_control,'String'); +object.function_inputs_text = get(object.function_inputs_control,'String'); +% new storage +object.Data.function_name = get(object.function_name_control,'String'); +object.Data.function_inputs = get(object.function_inputs_control,'String'); +object.Data.checked = object.pvs_checked; +object.Data.multi_mode = object.multi_mode; + +set.set = 1; +set.inputs = object.settings.pvs_includes; +set.count = object.settings.counter_trials; +set.range = object.settings.counter_range; +set.except = object.settings.except; +object.Data.settings = set; +end + diff --git a/@GUI/save_ext_call.m b/@GUI/save_ext_call.m new file mode 100644 index 0000000..b9103cb --- /dev/null +++ b/@GUI/save_ext_call.m @@ -0,0 +1,36 @@ +%% save_ext_call +% callback function that is called whenever the save ext button +% is pressed. This function will generate the code for the table +% and output it to an external embedded matlab file which can +% then be used in other functions. Filename of new file will be +% the same as the expression name, currently this function will +% overwrite an existing file of the same name. +% inputs: +% object:GUI - current GUI object +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = save_ext_call(object,src,event) +object.save_data; +% file name will be expression_name.m +fileid = fopen([get(object.function_name_control,'String') '.m'],'w'); +%code = []; +%code = sprintf('function output = %s(%s)\n%s\noutput=0;\n',get(object.function_name_control,'String'),get(object.function_inputs_control,'String'),'%%#eml'); +%code = [code object.generate_code(object.Grid1,object.Grid2,0)]; +code = object.EMLGen.generate_eml_code; + +fprintf(fileid,code); +% save an extra file called expression_name.data which +% contains a binary representation of the current gui object. +filename = [get(object.function_name_control,'String') '.table']; +%save(filename,'object'); +object.save_data; + +object.save_settings; +object.Data.save; +fclose(fileid); +end + diff --git a/@GUI/save_results.m b/@GUI/save_results.m new file mode 100644 index 0000000..5644c2b --- /dev/null +++ b/@GUI/save_results.m @@ -0,0 +1,16 @@ +%% save_results +% Save as save_conditions but for the results grid, since not a +% recursive datatype we do not need to recurse. +% inputs: +% obj:GUI - current GUI object +% grid:RGrid - results grid to be saved. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = save_results(object,grid) +for i=1:size(grid.Cells,2) + grid.Cells(i).result_text = get(grid.Cells(i).result,'String'); +end +end + diff --git a/@GUI/save_settings.m b/@GUI/save_settings.m new file mode 100644 index 0000000..ff588cd --- /dev/null +++ b/@GUI/save_settings.m @@ -0,0 +1,18 @@ +%% save_settings +% save just the settings to the data object +% inputs: +% object:GUI - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = save_settings(object) +set.set = 1; +set.inputs = object.settings.pvs_includes; +set.count = object.settings.counter_trials; +set.range = object.settings.counter_range; +object.Data.settings = set; +object.Data.function_name = get(object.function_name_control,'String'); +object.Data.function_inputs = get(object.function_inputs_control,'String'); +end + diff --git a/@GUI/setData.m b/@GUI/setData.m new file mode 100644 index 0000000..f86079c --- /dev/null +++ b/@GUI/setData.m @@ -0,0 +1,23 @@ +%% setData +% set the gui data object based on inputed data structure +% inputs: +% obj:GUI - GUI object +% Data:Data - Data object +% outputs: +% object:GUI - object that is created +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = setData(object,Data) +object.Data = Data; +object.Grid0 = Data.Grid0; +object.Grid1 = Data.Grid1; +object.Grid2 = Data.Grid2; +object.pvs_checked = Data.checked; +object.function_name_text = Data.function_name; +object.function_inputs_text = Data.function_inputs; +object.multi_mode = Data.multi_mode; +if isempty(object.multi_mode) + object.multi_mode = 0; +end +end + diff --git a/@GUI/setPBenable.m b/@GUI/setPBenable.m new file mode 100644 index 0000000..6453143 --- /dev/null +++ b/@GUI/setPBenable.m @@ -0,0 +1,24 @@ + +%% setBPenable +% enable or diable the delete cell buttons based on the size of +% a grid, so that you can't delete below one cell. +% inputs: +% object:GUI - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = setPBenable(object) +if size(object.Grid1.cells,2) > 1 + set(object.Grid1.delete_cell_pb,'Enable','on'); +else + set(object.Grid1.delete_cell_pb,'Enable','off'); +end + +if size(object.Grid2.cells,2) > 1 + set(object.Grid2.delete_cell_pb,'Enable','on'); +else + set(object.Grid2.delete_cell_pb,'Enable','off'); +end + +end \ No newline at end of file diff --git a/@GUI/set_command_pos.m b/@GUI/set_command_pos.m new file mode 100644 index 0000000..eb5fc57 --- /dev/null +++ b/@GUI/set_command_pos.m @@ -0,0 +1,30 @@ +%% set_command_pos +% sets the location of all the command buttons, labels and edit +% boxes, places objects at the top of the figure which it +% determines by looking at the height of the figure handle +% inputs: +% obj:GUI - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_command_pos(object) +figpos = get(object.fig,'Position'); +% figure out the height of the figure +l_fig_height = figpos(4); +set(object.edit_tog,'Position',[object.pb_offset l_fig_height-object.pb_offset-object.pb_height object.pb_width object.pb_height]); +set(object.save_pb,'Position',[object.pb_offset*2+object.pb_width,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); +set(object.close_pb,'Position',[object.pb_offset*3+object.pb_width*2,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); +set(object.save_ext_pb,'Position',[object.pb_offset*4+object.pb_width*3,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); +set(object.check_pb,'Position',[object.pb_offset*5+object.pb_width*4,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); +set(object.pvs_pb,'Position',[object.pb_offset*6+object.pb_width*5,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); +set(object.input_pb,'Position',[object.pb_offset*7+object.pb_width*6,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); +set(object.settings_pb,'Position',[object.pb_offset*8+object.pb_width*7,l_fig_height-object.pb_offset-object.pb_height,object.pb_width,object.pb_height]); + +set(object.input_label,'Position',[object.pb_offset l_fig_height-object.pb_offset*3-object.pb_height-object.htx_height object.pb_width object.htx_height]); +set(object.function_inputs_control,'Position',[object.pb_offset*2+object.pb_width l_fig_height-object.pb_offset*3-object.htx_height-object.pb_height object.text_width object.htx_height]); +set(object.name_label,'Position',[object.pb_offset*2+object.pb_width+object.text_width l_fig_height-object.pb_offset*3-object.pb_height-object.htx_height object.pb_width object.htx_height]); +set(object.function_name_control,'Position',[object.pb_offset*3+object.pb_width*2+object.text_width l_fig_height-object.pb_offset*3-object.pb_height-object.htx_height object.text_width object.htx_height]); + +end + diff --git a/@GUI/set_grid.m b/@GUI/set_grid.m new file mode 100644 index 0000000..c6eb700 --- /dev/null +++ b/@GUI/set_grid.m @@ -0,0 +1,18 @@ +%% set_grid +% allows accessing objects to set the grid variables to the +% inputed objects +% inputs: +% obj:GUI - current GUI object +% grid2:Grid - Grid on the left +% grid1:Grid - Grid on the top +% grid0:RGrid - Results grid +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_grid(object,grid2,grid1,grid0) +object.Grid2 = grid2; +object.Grid1 = grid1; +object.Grid0 = grid0; +end + diff --git a/@GUI/settings_call.m b/@GUI/settings_call.m new file mode 100644 index 0000000..ccbb260 --- /dev/null +++ b/@GUI/settings_call.m @@ -0,0 +1,15 @@ +%% settings_call +% open up the settings window +% inputs: +% obj:GUI - GUI objecto +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = settings_call(object,src,event) +object.settings.show; + +end + diff --git a/@GUI/textbox_callback.m b/@GUI/textbox_callback.m new file mode 100644 index 0000000..f0829ae --- /dev/null +++ b/@GUI/textbox_callback.m @@ -0,0 +1,59 @@ +%% textbox_callback +% callback for when the text of a callback is changed. +% inputs: +% object - current GUI object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = textbox_callback(object,src,event) +% make sure the character pressed isn't empty + +if((strcmp(event.Character,'z')) && (strcmp(char(event.Modifier),'command') || strcmp(char(event.Modifier),'control'))) + return +end +if((strcmp(event.Character,'r')) && (strcmp(char(event.Modifier),'command') || strcmp(char(event.Modifier),'control'))) + return +end + +if strcmp(event.Key,'tab') + event.Character = ''; + return; +end + + +if(~isempty(unicode2native(event.Character))) + % make sure the character is a printable character + if event.Character > 33 || event.Character == 8 + if object.pvs_checked == 1 + object.pvs_checked = 0; + object.update_Statusbar; + if (object.mode == 1) + TableBlock.set_block_display(object.block_handle,object.pvs_checked); + end + end + end + + % hack because api does not update the string field of + % textbox until after it loses focus. temporarily focus on + % label, read string, refocus on textbox. + uicontrol(object.name_label); + + undo_data.action = 1; + undo_data.grid = []; + undo_data.cell = src; + undo_data.text = get(src,'String'); + undo_data.subgrid = []; + + object.undo_man.new_state(undo_data); + + uicontrol(src); + figure(object.fig); + + object.update_undoredo; + + + +end \ No newline at end of file diff --git a/@GUI/typecheck_call.m b/@GUI/typecheck_call.m new file mode 100644 index 0000000..3c60a10 --- /dev/null +++ b/@GUI/typecheck_call.m @@ -0,0 +1,14 @@ +function [ output_args ] = typecheck_call( object,src,event ) +%TYPECHECK_CALL Summary of this function goes here +% Detailed explanation goes here + +if object.default_prover == object.CVC_const + + cvc_ext_call(object,src,event); +else + pvs_ext_call(object,src,event); +end + + +end + diff --git a/@GUI/undo_call.m b/@GUI/undo_call.m new file mode 100644 index 0000000..1d5326c --- /dev/null +++ b/@GUI/undo_call.m @@ -0,0 +1,71 @@ +%% undo_call +% called when user selects undo, calls undomanager and performs action +% inputs: +% object - GUI object +% src - source object +% event - event data +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = undo_call(object,src,event) + +object.undo_man; +recalled_data = object.undo_man.undo; +if isempty(recalled_data); + return; +else + switch recalled_data.action + case 1 % changed cell contents + try + set(recalled_data.cell,'String',recalled_data.text); + catch exception + end + case 2 % created new cell in grid + recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1); + case 3 % deleted cell in grid (not the last) + recalled_data.grid.cells = [recalled_data.grid.cells recalled_data.cell]; + recalled_data.grid.num_cells = recalled_data.grid.num_cells + 1; + % refresh the rGrid so that a new results cell is created + if(~isempty(recalled_data.grid.rGrid)) + recalled_data.grid.rGrid.refresh; + end + object.reset_wh(); + object.draw_allgrids(1); + object.undo_man.search_replace(1,recalled_data.subgrid,recalled_data.cell.cond); + set(recalled_data.grid.delete_cell_pb,'Enable','on'); + + case 4 % new grid + recalled_data.grid.deep_delete; + recalled_data.cell.subgrid = []; + recalled_data.cell.pb_flag = 1; + object.reset_wh(); + object.draw_allgrids(1); + + case 5 % deleting last cell in grid + recalled_data.cell.subgrid = recalled_data.grid; + recalled_data.cell.pb_flag = 0; + if(~isempty(recalled_data.cell.parent_grid.rGrid)) + recalled_data.cell.parent_grid.rGrid.delete_g2s(recalled_data.cell); + end + if(~isempty(recalled_data.grid.rGrid)) + recalled_data.grid.rGrid.refresh; + end + object.reset_wh(); + object.draw_allgrids(1); + + recalled_data.grid.cells = [recalled_data.grid.cells recalled_data.subgrid]; + recalled_data.grid.num_cells = recalled_data.grid.num_cells + 1; + if(~isempty(recalled_data.grid.rGrid)) + recalled_data.grid.rGrid.refresh; + end + object.reset_wh(); + object.draw_allgrids(1); + set(recalled_data.grid.delete_cell_pb,'Enable','on'); + end +end + + +object.update_undoredo; +end + diff --git a/@GUI/update_Statusbar.m b/@GUI/update_Statusbar.m new file mode 100644 index 0000000..d09d93c --- /dev/null +++ b/@GUI/update_Statusbar.m @@ -0,0 +1,28 @@ +%% update_Statusbar +% update the statusbar located at bottom of window based on +% current state of typecheckness +% inputs: +% obj:GUI - GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = update_Statusbar(object) + +warning off MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame +% statusbar depends on JavaFrame which may be obsolete in +% future versions of Matlab, can still use in old versions +try + if (object.pvs_checked == 0) + sb = statusbar(object.fig, 'Status: Not Typechecked'); + set(sb.TextPanel,'Foreground',[1,0,0]); + elseif (object.pvs_checked == 1) + sb = statusbar(object.fig, 'Status: Typechecked'); + set(sb.TextPanel,'Foreground',[0,1,0]); + + end +catch exception + % do nothing if exception found, may change in future. + +end +end diff --git a/@GUI/update_multi_check_status.m b/@GUI/update_multi_check_status.m new file mode 100644 index 0000000..6e30211 --- /dev/null +++ b/@GUI/update_multi_check_status.m @@ -0,0 +1,22 @@ +%% update_multi_check_status +% updates the menu item checked status for singal output vs. multioutput based on the +% current status of the program. +% inputs: +% object - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function update_multi_check_status( object ) + + +if object.multi_mode == 0 + set(object.multi_opt_reg,'Checked','on'); + set(object.multi_opt_out,'Checked','off'); +else + set(object.multi_opt_reg,'Checked','off'); + set(object.multi_opt_out,'Checked','on'); +end + +end + diff --git a/@GUI/update_prover_check_status.m b/@GUI/update_prover_check_status.m new file mode 100644 index 0000000..a768ac2 --- /dev/null +++ b/@GUI/update_prover_check_status.m @@ -0,0 +1,22 @@ +%% update_prover_check_status +% updates the menu item checked status for singal output vs. multioutput based on the +% current status of the program. +% inputs: +% object - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function update_prover_check_status( object ) + + +if object.default_prover == object.CVC_const + set(object.prover_opt_cvc,'Checked','on'); + set(object.prover_opt_pvs,'Checked','off'); +else + set(object.prover_opt_cvc,'Checked','off'); + set(object.prover_opt_pvs,'Checked','on'); +end + +end + diff --git a/@GUI/update_undoredo.m b/@GUI/update_undoredo.m new file mode 100644 index 0000000..5edd45c --- /dev/null +++ b/@GUI/update_undoredo.m @@ -0,0 +1,29 @@ +%% update_undoredo +% either enables or disables the undo/redo menu items based on the +% current status of the undo manager. +% inputs: +% object - current GUI object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [ ] = update_undoredo( object ) +% updates the menu options so that they are either enabled or disabled + +if (object.undo_man.undo_level == 0) + set(object.redo_opt,'Enable','off'); +else + set(object.redo_opt,'Enable','on'); +end + +if (object.undo_man.current_depth == 0) + set(object.undo_opt,'Enable','off'); +else + set(object.undo_opt,'Enable','on'); +end + + + + +end + diff --git a/@Grid/Grid.m b/@Grid/Grid.m new file mode 100644 index 0000000..9b4425c --- /dev/null +++ b/@Grid/Grid.m @@ -0,0 +1,35 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef Grid < handle + + properties + parent_cell = []; + parent_grid = []; + cells = []; + split_pb = []; + num_cells = 0; + grid_index = 0; + rGrid = []; + new_cell_pb = []; + delete_cell_pb = []; + end + + methods + %% Grid + % constructor + % inputs: + % index:integer - Grid's index + % p_cell:Cell - Parent cell + % outputs: + % n:Cell - created cell + function n = Grid(index,p_cell) + n.grid_index = index; + n.parent_cell = p_cell; + end + + + end + + +end + diff --git a/@Grid/clone.m b/@Grid/clone.m new file mode 100644 index 0000000..fcfa5f9 --- /dev/null +++ b/@Grid/clone.m @@ -0,0 +1,27 @@ +%% clone +% function will create a copy of the current grid and store it +% in dest_grid, since grid is a recursive datatype this is a +% recursive function in order to do a deep clone. +% inputs: +% object:Grid - current Grid object +% dest_grid:Grid - grid to copy contents to +% index:int - index of the current grid +% p_cell:Cell - parent cell of the current grid. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = clone(object,dest_grid,index,p_cell) +for i=1:size(object.cells,2) + dest_grid.new_Cell(); + dest_grid.cells(i).cond_text = object.cells(i).cond_text; + if (~isempty(object.cells(i).subgrid)) + dest_grid.cells(i).subgrid = Grid(dest_grid.cells(i).cell_index,dest_grid.cells(i)); + dest_grid.cells(i).subgrid.set_rGrid(dest_grid.cells(i).parent_grid.rGrid); + object.cells(i).subgrid.clone(dest_grid.cells(i).subgrid,object.cells(i).subgrid.grid_index,dest_grid.cells(i)); + else + + end + +end +end \ No newline at end of file diff --git a/@Grid/deep_delete.m b/@Grid/deep_delete.m new file mode 100644 index 0000000..0d2772e --- /dev/null +++ b/@Grid/deep_delete.m @@ -0,0 +1,25 @@ +%% deep_delete +% deletes an entire grid as well as all the subgrids associated +% with it. +% inputs: +% object:Grid - current Grid object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = deep_delete(object) +% loop through each cell and delete the associated result +% cells and call delete_Cell on each of the cells, which will +% then call deep_delete on its subgrids. +for i=size(object.cells,2):-1:1 + object.rGrid.delete_g2s(object.cells(i)); + object.cells(i).delete_Cell; + %object.cells(i) = []; +end +delete(object.new_cell_pb); +delete(object.delete_cell_pb); +object.new_cell_pb = []; +object.delete_cell_pb = []; + +end + diff --git a/@Grid/delete_Cell.m b/@Grid/delete_Cell.m new file mode 100644 index 0000000..d15d401 --- /dev/null +++ b/@Grid/delete_Cell.m @@ -0,0 +1,23 @@ +%% delete_Cell +% deletes the last cell in the grid, also deletes an associated +% new grid push button, +% TODO, need to implement the case where last cell is deleted. +% inputs: +% object:Grid - current Grid object +% outputs +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = delete_Cell(object) + + +last_cell = object.num_cells; +object.rGrid.delete_g2s(object.cells(end)); +object.cells(end).cond = []; +object.cells(end).grid_pb = []; +object.cells(end) = []; +if(~isempty(object.rGrid)) + object.rGrid.refresh; +end +end + diff --git a/@Grid/max_width.m b/@Grid/max_width.m new file mode 100644 index 0000000..69610a0 --- /dev/null +++ b/@Grid/max_width.m @@ -0,0 +1,25 @@ + +%% max_width +% determines the maximum width from a current grid, the maximum +% widht represents the number of levels of subgrids from a given +% grid. +% inputs: +% object:Grid - current Grid object +% outputs: +% m:integer - value representing the maximum width from the +% current grid. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function m = max_width(object,width) +temp = []; +for i=1:size(object.cells,2) + if (~isempty(object.cells(i).subgrid)) + temp = [temp object.cells(i).subgrid.max_width(width+1)]; + else + temp = [temp width]; + end + +end +m = max(temp); +end + diff --git a/@Grid/new_Cell.m b/@Grid/new_Cell.m new file mode 100644 index 0000000..8f1e325 --- /dev/null +++ b/@Grid/new_Cell.m @@ -0,0 +1,18 @@ +%% new_Cell +% creates a new cell in the current grid. +% inputs: +% object:Grid - current Grid object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = new_Cell(object) +cell = Cell(object.num_cells+1,object); +object.num_cells = object.num_cells + 1; +object.cells = [object.cells cell]; +% refresh the rGrid so that a new results cell is created +if(~isempty(object.rGrid)) + object.rGrid.refresh; +end +end + diff --git a/@Grid/pb_delete_call.m b/@Grid/pb_delete_call.m new file mode 100644 index 0000000..39232bf --- /dev/null +++ b/@Grid/pb_delete_call.m @@ -0,0 +1,85 @@ +%% pb_delete_call +% callback function for when user clicks on the delete cell +% button. +% inputs: +% object:Grid - current Grid object +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pb_delete_call(object,src,event) +gui = get(src,'userdata'); +gui.save_data; +deleted_cell = object.cells(end); + + + +% deleted last cell in grid +if size(object.cells,2) == 1 + if (~isempty(object.parent_cell)) + + + if isempty(event) || event ~= 1 + + undo_data.action = 5; + undo_data.grid = object; + undo_data.cell = object.parent_cell; + undo_data.text = deleted_cell.cond; + undo_data.subgrid = deleted_cell; + + gui.undo_man.new_state(undo_data); + + end + end +else + if isempty(event) || event ~= 1 + + undo_data.action = 3; + undo_data.grid = object; + undo_data.cell = deleted_cell; + undo_data.text = deleted_cell.cond_text; + undo_data.subgrid = deleted_cell.cond; + + gui.undo_man.new_state(undo_data); + + end + +end + +% button could be pressed in the left or top grid so we need to +% try to remove the result cell associated with either case. +object.rGrid.delete_g2s(deleted_cell); +object.rGrid.delete_g1s(deleted_cell); +deleted_cell.delete_Cell; +object.cells(end) = []; + +% deleted last cell in grid +if size(object.cells,2) == 0 + if (~isempty(object.parent_cell)) + + object.parent_cell.subgrid = []; + object.parent_cell.pb_flag = 1; + delete(object.new_cell_pb); + delete(object.delete_cell_pb); + object.rGrid.refresh; + + end + +end + + +if size(object.cells,2) == 1 && isempty(object.parent_cell) + set(object.delete_cell_pb,'Enable','off'); +end +gui.reset_wh(); +gui.draw_allgrids(0); + + +gui.update_undoredo; + + + +end + diff --git a/@Grid/pb_new_call.m b/@Grid/pb_new_call.m new file mode 100644 index 0000000..892d19e --- /dev/null +++ b/@Grid/pb_new_call.m @@ -0,0 +1,38 @@ +%% pb_new_call +% call back function for the new cell push button. When button +% is pressed a new cell object is created in the current grid +% and the table is redrawn +% inputs: +% object:Grid - current Grid object +% src:double - source of the callback calling +% event:eventdata - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pb_new_call(object,src,event) +gui = get(src,'userdata'); +object.new_Cell; +gui.reset_wh(); +gui.draw_allgrids(0); +if size(object.cells,2) > 1 + set(object.delete_cell_pb,'Enable','on'); +else + set(object.delete_cell_pb,'Enable','off'); +end + +if isempty(event) || event ~= 1 + undo_data.action = 2; + undo_data.grid = object; + undo_data.cell = []; + undo_data.text = []; + undo_data.subgrid = []; + + + gui.undo_man.new_state(undo_data); +end +gui.update_undoredo; + + +end + diff --git a/@Grid/purge.m b/@Grid/purge.m new file mode 100644 index 0000000..48210bf --- /dev/null +++ b/@Grid/purge.m @@ -0,0 +1,21 @@ +%% purge +% Removes useless data from the block on saving, avoiding unnecessary +% changes and data storage. +% inputs: +% object - Grid object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function purge( object ) +% delete(object.new_cell_pb) +% delete(object.delete_cell_pb) +object.new_cell_pb = []; +object.delete_cell_pb = []; + +for i=1:size(object.cells, 2) + object.cells(i).purge +end + +end + diff --git a/@Grid/set_delete_pb.m b/@Grid/set_delete_pb.m new file mode 100644 index 0000000..3f817d4 --- /dev/null +++ b/@Grid/set_delete_pb.m @@ -0,0 +1,22 @@ +%% set_delete_pb +% create the delete cell push button +% inputs: +% object:Grid - current Grid object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_delete_pb(object,fig,pos) +if(isempty(object.delete_cell_pb) || ~ishghandle(object.delete_cell_pb)) + object.delete_cell_pb = uicontrol('style','push',... + 'units','pix',... + 'string','delete',... + 'HorizontalAlign','left',... + 'Parent',fig,... + 'position',pos,... + 'callback',@(src,event)pb_delete_call(object,src,event)); +else + set(object.delete_cell_pb,'position',pos); +end +end + diff --git a/@Grid/set_heights.m b/@Grid/set_heights.m new file mode 100644 index 0000000..a34b4b8 --- /dev/null +++ b/@Grid/set_heights.m @@ -0,0 +1,21 @@ +%% set_heights +% sets the heights for each of the cells and subcells of a grid, +% uses the cells cal_height method to determine what the heights +% should be. +% inputs: +% object:Grid - current Grid object +% edit:boolean - current value of the edit toggle. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_heights(object,edit) +for i = 1:size(object.cells,2) + if (~isempty(object.cells(i).subgrid)) + object.cells(i).subgrid.set_heights(edit); + end + object.cells(i).height = object.cells(i).cal_height(edit); +end + +end + diff --git a/@Grid/set_pb.m b/@Grid/set_pb.m new file mode 100644 index 0000000..e3f9103 --- /dev/null +++ b/@Grid/set_pb.m @@ -0,0 +1,22 @@ +%% set_pb +% create the new cell push button +% inputs: +% object:Grid - current Grid object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_pb(object,fig,pos) +if(isempty(object.new_cell_pb) || ~ishghandle(object.new_cell_pb)) + object.new_cell_pb = uicontrol('style','push',... + 'units','pix',... + 'string','new',... + 'HorizontalAlign','left',... + 'Parent',fig,... + 'position',pos,... + 'callback',@(src,event)pb_new_call(object,src,event)); +else + set(object.new_cell_pb,'position',pos); +end +end + diff --git a/@Grid/set_rGrid.m b/@Grid/set_rGrid.m new file mode 100644 index 0000000..6db6dad --- /dev/null +++ b/@Grid/set_rGrid.m @@ -0,0 +1,13 @@ +%% set_rGrid +% set the reference to the Results grid +% inputs: +% object:Grid - current Grid objectect +% r:RGrid - result Grid +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_rGrid(object,r) +object.rGrid = r; +end + diff --git a/@Grid/set_widths.m b/@Grid/set_widths.m new file mode 100644 index 0000000..c067c8d --- /dev/null +++ b/@Grid/set_widths.m @@ -0,0 +1,22 @@ +%% set_widths +% sets the widths for each of the cells and subcells in a grid. +% the width of a cell is equal to the max width of the previous +% level - 1 if the cell has no subgrids, or 1 if the cell has a +% subgrid. +% inputs: +% object:Grid - current Grid object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_widths(object,max_width) +for i=1:size(object.cells,2) + if (~isempty(object.cells(i).subgrid)) + object.cells(i).subgrid.set_widths(max_width-1); + object.cells(i).width = 1; + else + object.cells(i).width = max_width; + end +end +end + diff --git a/@Grid/upgrade.m b/@Grid/upgrade.m new file mode 100644 index 0000000..55aa1a7 --- /dev/null +++ b/@Grid/upgrade.m @@ -0,0 +1,16 @@ +%% upgrade +% Preforms any necessary upgrades to the TET to comply with the latest version. +% inputs: +% object - Grid object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function upgrade( object ) + +for i=1:size(object.cells, 2) + object.cells(i).upgrade +end + +end + diff --git a/@PVS_checker/PVS_checker.m b/@PVS_checker/PVS_checker.m new file mode 100644 index 0000000..a904b52 --- /dev/null +++ b/@PVS_checker/PVS_checker.m @@ -0,0 +1,61 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef PVS_checker < handle + % class contains all the functionality specific to the PVS theorem + % prover + + properties + + default_type = 'real'; + pvs_version = []; + output_type = []; + input_type = []; + data = []; + mode = []; % 0 - graphical, 1 - command + multi_mode = 1; + type_mode = []; + end + + % Static Functions + methods(Static) + + [theory_id, decls] = parse_prf_file(string); + + + [decl_id,new_pos] = parse_decl_id(string,pos); + + + [id,new_pos] = parse_id(string,pos); + + + [paren_string, new_pos] = parse_paren(string,pos); + + matlab_type = matlab_type_to_pvs_type( pvs_type ); + + + version = get_pvs_version; + + [ replaced ] = replace_types_sim( pvs_type, sim_type ); + + + end + + + methods + + %% PVS_checker + % constructor + % inputs: + % data - data object + % outputs; + % object - created object + function object = PVS_checker(data) + object.data = data; + end + + + + end + +end + diff --git a/@PVS_checker/check_status.m b/@PVS_checker/check_status.m new file mode 100644 index 0000000..6093e94 --- /dev/null +++ b/@PVS_checker/check_status.m @@ -0,0 +1,30 @@ +%% check_status +% checks the status of a pvs_checker object by generating a +% status script running it a checking the results to ensure that +% all the theories are proved. +% inputs: +% object:PVS_checker - PVS_checker object +% outputs: +% status:boolean - 0 if pvs file has been checked, 1 if it has +% not +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function status = check_status(object) +script_name = object.generate_pvs_status_script(object.data.function_name ); +[status, result] = system(['pvs -batch -v 3 -l ' script_name]); +parsed = object.parse_status(result); +pass = 1; +if (size(parsed,2) == 0) + pass = 0; +end +for i=1:2:size(parsed,2)-1 + if ~strncmp(parsed(i+1),'proved',6) + pass = 0; + end +end + +status = pass; +delete(script_name) + +end + diff --git a/@PVS_checker/generate_eml_multi.m b/@PVS_checker/generate_eml_multi.m new file mode 100644 index 0000000..aee6771 --- /dev/null +++ b/@PVS_checker/generate_eml_multi.m @@ -0,0 +1,50 @@ +%% generate_eml_horizontal +% generate the embedded matlab code for grid1, seperated from +% the code for grid2 since for a 2d table grid1 conditions will +% be sub conditions of grid2 conditions +% inputs: +% object:EMLGenerator - current object +% g1:Grid - Grid 1 +% g2_cell:Cell - Cell for which grid1 is sub conditon of +% depth:int - integer representing recursion dept for formating +% use +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_eml_multi(object,g1,g2_cell,depth) + + +code = []; +code2 = []; +elsecell = []; +for i=1:size(g1.cells,2) + g1cond = g1.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + + output_parsed = EMLGenerator.parse_inputs(strtrim(char(g1.cells(i).cond_text))); + + output = char(output_parsed{1}(1)); + + + code = [code sprintf('%s := ',output)]; + + resultcell = object.data.Grid0.search_return(g1.cells(i),g2_cell); + if(~isempty(resultcell)) + + code = [code sprintf('%s',strtrim(char(resultcell.result_text)))]; + + else + end + if i ~= size(object.data.Grid1.cells,2) + code = [code ',']; + end +end +code = ['(#' code '#)']; + + +end + diff --git a/@PVS_checker/generate_pvs.m b/@PVS_checker/generate_pvs.m new file mode 100644 index 0000000..4c12c1a --- /dev/null +++ b/@PVS_checker/generate_pvs.m @@ -0,0 +1,100 @@ +%% genereate_pvs +% function will generate the pvs conditional code for a given +% table +% inputs: +% object:PVS_checker - PVS_checker object +% g1:Grid - left grid +% g2:Grid - top grid +% depth:int - number representing depth inside the table +% outputs: +% code:string - pvs code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_pvs(object,g1,g2,depth) +g1cond1 = g1.cells(1).cond_text; +g2cond1 = g2.cells(1).cond_text; +code = []; +%1D horizontal +if(~isempty(g1cond1) && isempty(g2cond1)) + code = [code object.generate_pvs_horizontal(g1,g2.cells(1),depth)]; + % something in vertical column +else + + code = [code sprintf('COND\n')]; + elsecell = []; + for i=1:size(g2.cells,2) + g2cond = g2.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + if (strcmp(g2cond,'otherwise')) + elsecell = g2.cells(i); + found = 1; + continue + end + code = [code sprintf('%s->',object.matlab_to_pvs_syntax_translation(strtrim(char(g2.cells(i).cond_text))))]; + + if(~isempty(g2.cells(i).subgrid)) + code = [code object.generate_pvs(g1,g2.cells(i).subgrid,depth)]; + else + if (~isempty(g1cond1)) + if (object.data.multi_mode == 0) + code = [code object.generate_pvs_horizontal(g1,g2.cells(i),depth)]; + else + code = [code object.generate_pvs_multi_output(g1,g2.cells(i),depth)]; + end + else + + resultcell = object.data.Grid0.search_return(g1.cells(1),g2.cells(i)); + if(~isempty(resultcell)) + code = [code object.matlab_to_pvs_syntax_translation(strtrim(char(resultcell.result_text)))]; + + + else + end + end + end + if(isempty(elsecell)) + if(i~= size(g2.cells,2)) + code = [code sprintf(',\n')]; + else + code = [code sprintf('\n')]; + end + else + code = [code sprintf(',\n')]; + end + + end + if(~isempty(elsecell)) + %resultcell = object.Grid0.search_return(elsecell,elsecell); + code = [code sprintf('ELSE->')]; + + if(~isempty(elsecell.subgrid)) + code = [code object.generate_pvs(g1,elsecell.subgrid,depth) sprintf('\n')]; + else + if (~isempty(g1cond1)) + if (object.data.multi_mode == 0) + code = [code object.generate_pvs_horizontal(g1,elsecell,depth) sprintf('\n')]; + else + code = [code object.generate_pvs_multi_output(g1,elsecell,depth) sprintf('\n')]; + + end + else + + resultcell = object.data.Grid0.search_return(g1.cells(1),elsecell); + if(~isempty(resultcell)) + code = [code object.matlab_to_pvs_syntax_translation(strtrim(char(resultcell.result_text))) sprintf('\n')]; + + end + end + end + + end + + code = [code sprintf('ENDCOND')]; + +end +end + + diff --git a/@PVS_checker/generate_pvs_file.m b/@PVS_checker/generate_pvs_file.m new file mode 100644 index 0000000..600d486 --- /dev/null +++ b/@PVS_checker/generate_pvs_file.m @@ -0,0 +1,152 @@ + +%% generate_pvs_file +% function will create a pvs file representing the table stored +% in data. +% inputs: +% object:PVS_checker - PVS_checker object +% filename:string - string representing file name excluding +% extension +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function error = generate_pvs_file(object,filename) +% type_mode = 0 -> use pvs types +% type_mode = 1 -> use simulink typing information + +error = 0; + +if object.type_mode + if size(object.output_type,2) == 2 + object.data.function_name = PVS_checker.replace_types_sim(object.data.function_name,object.output_type{2}); + end +end +function_names = EMLGenerator.parse_inputs(object.data.function_name); +function_name = char(function_names{1}(1)); + +% make sure that function name is valid +valid = regexp(function_name,'[a-zA-Z][_a-zA-Z0-9]*','match'); +if ~strcmp(function_name,valid) + msgbox(['function name is not valid PVS syntax' char(10) 'proper syntax for PVS Id is [a-zA-Z][_a-zA-Z0-9]*']); + error = 1; + return; +end + + +% setup 1 output vs multiple outputs +if object.data.multi_mode == 0 + + if(object.type_mode) + function_name_type = object.output_type{2}; + else + + if (size(function_names{1},2) == 2) + function_name_type = char(function_names{1}(2)); + + else + function_name_type = 'real'; + end + end +else + output = []; + for i=1:size(object.data.Grid1.cells,2) + parsed_output = EMLGenerator.parse_inputs(strtrim(char(object.data.Grid1.cells(i).cond_text))); + % if no specified output type + output = [output char(parsed_output{1}(1))]; + %%%%%%%%%% + if object.type_mode + for j=1:size(object.output_type,2) + if strcmp(char(parsed_output{1}(1)),object.output_type{j,1}) + if size(parsed_output{1},2) == 1 + output = [output ':' object.output_type{j,2}]; + else + output = [output PVS_checker.replace_types_sim([':' char(parsed_output{1}(2))],object.output_type{j,2})]; + end + end + end + else + + + %%%%%%%%% + if size(parsed_output{1},2) == 1 + output = [output ':real']; + else + output = [output ':' char(parsed_output{1}(2))]; + end + end + + if i ~= size(object.data.Grid1.cells,2) + output = [output ',']; + end + end + function_name_type = ['[# ' output ' #]']; +end + + +fileid = fopen([filename '.pvs'],'w'); +code = []; +code = sprintf('%s:THEORY\nBEGIN\n',function_name); +%code = [code sprintf('IMPORTING Funcs\n')]; +imports = object.pvs_check_for_imports; +if ~isempty(imports) + + if ~isempty(regexp(imports,'double|single', 'once')) + % flag to copy files + error = 2; + end +end +code = [code imports]; + + + +code = [code object.user_imports]; +if object.type_mode + code = [code 'IMPORTING matlab_types\n']; +end +% declare variables for each input + + +%if object.type_mode == 0 + %inputs = get(object.gui.function_inputs_control,'String'); + %inputs = regexp(inputs,',','split'); + parsed_inputs = EMLGenerator.parse_inputs(object.data.function_inputs); + + % add inputs to list of inputs to function + inputs_new = []; + for i=1:size(parsed_inputs,2) + % set to zero + if object.type_mode + for j=1:2:size(object.input_type,2) + if strcmp(char(parsed_inputs{i}(1)),object.input_type{j,1}) + if(size(parsed_inputs{i},2) == 2) + inputs_new = [inputs_new char(parsed_inputs{i}(1)) PVS_checker.replace_types_sim([':' char(parsed_inputs{1}(2))],object.input_type{j,2})]; + else + inputs_new = [inputs_new char(parsed_inputs{i}(1)) ':' object.input_type{j,2}]; + end + end + end + + else + if(size(parsed_inputs{i},2) == 2) + inputs_new = [inputs_new char(parsed_inputs{i}(1)) ':' char(parsed_inputs{i}(2))]; + else + inputs_new = [inputs_new char(parsed_inputs{i}(1)) ':' object.default_type]; + end + end + + if(i~=(size(parsed_inputs,2))) + inputs_new = [inputs_new ',']; + end + end + code = [code sprintf('%s(%s):%s = \n',function_name,inputs_new,function_name_type)]; + + +code = [code object.generate_pvs(object.data.Grid1,object.data.Grid2,0)]; +code = [code sprintf('\nEND %s',function_name)]; +fprintf(fileid,code); + +fclose(fileid); + +end + + diff --git a/@PVS_checker/generate_pvs_horizontal.m b/@PVS_checker/generate_pvs_horizontal.m new file mode 100644 index 0000000..f49cc3d --- /dev/null +++ b/@PVS_checker/generate_pvs_horizontal.m @@ -0,0 +1,60 @@ +%% generate_pvs_horizontal +% generate the pvs code for a condition in the horizontal(top) +% grid, done in seperate function because it will get called +% multiple times for the same condition in a 2d table. +% inputs: +% object:PVS_checker - PVS_checker object +% g1:Grid - left grid +% g2:Grid - top grid +% depth:int - number representing depth inside the table +% outputs: +% code:string - pvs code +% +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_pvs_horizontal(object,g1,g2_cell,depth) + +code = []; + +code = [code sprintf('COND\n')]; +elsecell = []; +for i=1:size(g1.cells,2) + g1cond = g1.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + if (strcmp(g1cond,'otherwise')) + elsecell = g1.cells(i); + found = 1; + continue + end + code = [code sprintf('%s->',object.matlab_to_pvs_syntax_translation(strtrim(char(g1.cells(i).cond_text))))]; + resultcell = object.data.Grid0.search_return(g1.cells(i),g2_cell); + if(~isempty(resultcell)) + code = [code object.matlab_to_pvs_syntax_translation(strtrim(char(resultcell.result_text)))]; + + if(isempty(elsecell)) + if(i~= size(g1.cells,2)) + code = [code sprintf(',\n')]; + else + code = [code sprintf('\n')]; + end + else + code = [code sprintf(',\n')]; + end + else + end +end +if(~isempty(elsecell)) + resultcell = object.data.Grid0.search_return(elsecell,g2_cell); + code = [code sprintf('ELSE->%s\n',object.matlab_to_pvs_syntax_translation(strtrim(char(resultcell.result_text))))]; + +end +code = [code sprintf('ENDCOND')]; + + + + +end + diff --git a/@PVS_checker/generate_pvs_multi_output.m b/@PVS_checker/generate_pvs_multi_output.m new file mode 100644 index 0000000..bd382da --- /dev/null +++ b/@PVS_checker/generate_pvs_multi_output.m @@ -0,0 +1,58 @@ +%% generate_eml_horizontal +% generate the embedded matlab code for grid1, seperated from +% the code for grid2 since for a 2d table grid1 conditions will +% be sub conditions of grid2 conditions +% inputs: +% object:EMLGenerator - current object +% g1:Grid - Grid 1 +% g2_cell:Cell - Cell for which grid1 is sub conditon of +% depth:int - integer representing recursion dept for formating +% use +% outputs: +% code:string - string of eml code +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function code = generate_eml_multi(object,g1,g2_cell,depth) + + +code = []; +code2 = []; +elsecell = []; +for i=1:size(g1.cells,2) + g1cond = g1.cells(i).cond_text; + % condition string of otherwise corresponds to an else + % statement, we allow this statement to be in any order + % in the cells of the grid, so we need to find where it + % is, if it exists. + + output_parsed = EMLGenerator.parse_inputs(strtrim(char(g1.cells(i).cond_text))); + + output = char(output_parsed{1}(1)); + + %if (i == 1) + code = [code sprintf('%s := ',output)]; + %else + % code1 = [code1 sprintf(',%s',output)]; + %end + resultcell = object.data.Grid0.search_return(g1.cells(i),g2_cell); + if(~isempty(resultcell)) + %if (i == 1) + code = [code sprintf('%s',object.matlab_to_pvs_syntax_translation(strtrim(char(resultcell.result_text))))]; + %else + % code2 = [code2 sprintf(',%s',strtrim(char(resultcell.result_text)))]; + %end + %code1 = [code sprintf('%soutput = %s;\n',[space ' '],EMLGenerator.type_convert(object.datatype,strtrim(char(resultcell.result_text))))]; + + else + end + if i ~= size(object.data.Grid1.cells,2) + code = [code ',']; + end +end +code = ['(#' code '#)']; +%code1 = [code1 ']']; +%code2 = [code2 ']']; +%code = [code1 ' = ' code2 sprintf('\n')]; + +end + diff --git a/@PVS_checker/generate_pvs_script.m b/@PVS_checker/generate_pvs_script.m new file mode 100644 index 0000000..589689d --- /dev/null +++ b/@PVS_checker/generate_pvs_script.m @@ -0,0 +1,22 @@ +%% generate_pvs_script +% generate the pvs script used to prove and look for counter +% examples for a theory. script will have name filename.el +% inputs: +% object:PVS_checker - PVS_checker object +% filename:string - filename to save the script as, exclude +% extension. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = generate_pvs_script(object,filename,sim_types) +fileid = fopen([filename '.el'],'w'); +%if sim_types == 0 +code = ['(prove-tccs-pvs-file "' filename '" "(try (try (subtype-tcc) (try (assert) (skip) (fail) ) (fail))(skip) (random-test :count ' sprintf('%ld',object.data.settings.count) ' :size ' sprintf('%d',object.data.settings.range) '))" )' sprintf('\n')]; +%else +% code = ['(prove-tccs-pvs-file "' filename '" "(try (try (subtype-tcc) (try (assert) (skip) (fail) ) (fail))(skip) (random-test :count ' sprintf('%ld',object.data.settings.count) ' :size ' sprintf('%d',object.data.settings.range) '))" )' sprintf('\n')]; +%end +fprintf(fileid,code); +fclose(fileid); +end + diff --git a/@PVS_checker/generate_pvs_status_script.m b/@PVS_checker/generate_pvs_status_script.m new file mode 100644 index 0000000..82f0ab7 --- /dev/null +++ b/@PVS_checker/generate_pvs_status_script.m @@ -0,0 +1,19 @@ +%% generate_pvs_status_script +% generate the script used for checking the status of a pvs file +% inputs: +% object:PVS_checker - PVS_checker object +% filename:string - filename of the pvs file to checkstatus of, +% excluding extension +% outputs: +% script_name:string - filename of the script of format name.el +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [script_name] = generate_pvs_status_script(object,filename) +script_name = [filename '_status' '.el']; +fileid = fopen(script_name,'w'); +code = ['(typecheck-prove "' filename '") (status-proof-pvs-file "' filename '")']; + +fprintf(fileid,code); +fclose(fileid); +end + diff --git a/@PVS_checker/get_pvs_version.m b/@PVS_checker/get_pvs_version.m new file mode 100644 index 0000000..d79ae21 --- /dev/null +++ b/@PVS_checker/get_pvs_version.m @@ -0,0 +1,14 @@ +%% get_pvs_version +% determines the version of pvs installed on the user computers by making +% a system call to pvs +% inputs: +% none +% outputs: +% version:string - version of pvs installed +% of form "PVS Version 4.2" +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function version = get_pvs_version +[status, result] = system('pvs --version'); +version = result; +end \ No newline at end of file diff --git a/@PVS_checker/matlab_to_pvs_syntax_translation.m b/@PVS_checker/matlab_to_pvs_syntax_translation.m new file mode 100644 index 0000000..c2bb208 --- /dev/null +++ b/@PVS_checker/matlab_to_pvs_syntax_translation.m @@ -0,0 +1,32 @@ +%% matlab_to_pvs_syntax_translation +%translate matlab syntax to pvs syntax, +% will be added to in the future +% will only work for functions in the prelude +% +% inputs: +% object:PVS_checker - PVS_checker object +% matlab_string:string - string to be converted from matlab +% syntax to pvs +% outputs; +% pvs_string:string - string converted to pvs syntax. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function pvs_string = matlab_to_pvs_syntax_translation(object,matlab_string) +s = [matlab_string(1,:)]; +for j = 2:size(matlab_string,1) + s = [s ' ' matlab_string(j,:)]; +end +matlab_string = s; + +pvs_string = regexprep(matlab_string,'&&',' AND '); +pvs_string = regexprep(pvs_string,'~(?!=)',' NOT '); +pvs_string = regexprep(pvs_string,'~=',' /= '); +pvs_string = regexprep(pvs_string,'==',' = '); +pvs_string = regexprep(pvs_string,'\|\|',' OR '); +pvs_string = regexprep(pvs_string,'ceil','ceiling'); +pvs_string = regexprep(pvs_string,'NaN','invalid'); +end + + + + diff --git a/@PVS_checker/matlab_type_to_pvs_type.m b/@PVS_checker/matlab_type_to_pvs_type.m new file mode 100644 index 0000000..29a4392 --- /dev/null +++ b/@PVS_checker/matlab_type_to_pvs_type.m @@ -0,0 +1,31 @@ +%% matlab_type_to_pvs_type +% converts matlab/simulink types to pvs +% inputs: +% pvs_type:string - matlab type +% outputs: +% matlab_type:string - pvs type +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function matlab_type = matlab_type_to_pvs_type( pvs_type ) +if(strcmp(pvs_type,'logical')) + matlab_type = 'bool'; +elseif (strncmp(pvs_type, 'int',3)) + matlab_type = pvs_type; +elseif (strncmp(pvs_type, 'uint', 4)) + matlab_type = pvs_type; +elseif (strcmp(pvs_type,'single') || strcmp(pvs_type,'double')) + matlab_type = 'real'; +elseif (strncmp(pvs_type,'Inherit',7)) + matlab_type = 'real'; +elseif (strncmp(pvs_type,'fixdt',5)) + params = regexp(pvs_type,'(?<=\().*(?=\))','match'); + split_params = regexp(params,',','split'); + matlab_type = sprintf('fp2[%d,%d,%d]',eval(char(split_params{1}(2))),eval(char(split_params{1}(2)))-eval(char(split_params{1}(3)))-eval(char(split_params{1}(1))),eval(char(split_params{1}(1)))); +else + matlab_type = 'error'; +end + + + +end + diff --git a/@PVS_checker/parse_decl_id.m b/@PVS_checker/parse_decl_id.m new file mode 100644 index 0000000..f92771e --- /dev/null +++ b/@PVS_checker/parse_decl_id.m @@ -0,0 +1,50 @@ +%% parse_decl_id +% function will parse the theory declaration portion of the prf +% file +% inputs: +% string:string - string containing the read in prf file. +% pos:int - position to start reading the string from. +% outputs; +% decl_id:string - the declaration id name +% new_pos:int - the position where the ending char was found. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [decl_id,new_pos] = parse_decl_id(string,pos) +i = pos + 1; +decl_id.id = []; +decl_id.default_proof_posn = []; +decl_id.ids = []; + +while(string(i) ~= ' ') + decl_id.id = [decl_id.id string(i)]; + i = i + 1; +end + +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + + +while(string(i) ~= ' ') + decl_id.default_proof_posn = [decl_id.default_proof_posn string(i)]; + i = i + 1; +end + +while(string(i) ~= '(') + i = i + 1; +end + + +while(string(i) ~= ')') + if (string(i) == '(') + pos = i; + [id_temp, pos_temp] = PVS_checker.parse_id(string,pos); + decl_id.ids = [decl_id.ids id_temp]; + i = pos_temp; + end + i = i + 1; +end +new_pos = i; + + +end \ No newline at end of file diff --git a/@PVS_checker/parse_id.m b/@PVS_checker/parse_id.m new file mode 100644 index 0000000..cee0d52 --- /dev/null +++ b/@PVS_checker/parse_id.m @@ -0,0 +1,144 @@ + %% parse_id +% function will parse the individual ids of the decls +% inputs: +% string:string - string containing the read in prf file. +% pos:int - position to start reading the string from. +% outputs; +% id:structure - structure containing the parsed prf id section +% new_pos:int - the position where the ending char was found. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [id,new_pos] = parse_id(string,pos) +i = pos + 1; +id.id = []; +id.description = []; +id.run_date = []; +id.create_date = []; +id.status = []; +id.refers_to = []; +id.real_time = []; +id.run_time = []; +id.interactive = []; +id.decision_proc = []; + + +while(string(i) ~= ' ') + id.id = [id.id string(i)]; + i = i + 1; +end + +i = i + 1; + +% find the description +if (string(i) == '"') + stop_char = '"'; +else + stop_char = ' '; +end + +while(string(i) ~= stop_char) + id.description = [id.description string(i)]; + i = i + 1; +end + +if (string(i) == '"') + i = i + 1; +end + +% get the create_date +i = i + 1; + +while(string(i) ~= ' ') + id.create_date = [id.create_date string(i)]; + i = i + 1; +end + +% get the run date +i = i + 1; + +while(string(i) ~= ' ') + id.run_date = [id.run_date string(i)]; + i = i + 1; +end + +while(string(i) ~= '(') + i = i + 1; +end + +[id.script, new_pos] = PVS_checker.parse_paren(string,i); + +i = new_pos + 1; +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + +%get the status + + +while(string(i) ~= ' ') + id.status = [id.status string(i)]; + i = i + 1; +end + +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + +% get the refers_to + +if (string(i) == '(') + [id.refers_to, new_pos] = PVS_checker.parse_paren(string,i); + i = new_pos + 1; +else + while(string(i) ~= ' ') + id.refers_to = [id.refers_to string(i)]; + i = i + 1; + end +end + + + +% get the real_time + +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + +while(string(i) ~= ' ') + id.real_time = [id.real_time string(i)]; + i = i + 1; +end + + +% get the run_time +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + +while(string(i) ~= ' ' ) + id.run_time = [id.run_time string(i)]; + i = i + 1; +end +% get the interactive + +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + +while(string(i) ~= ' ') + id.interactive = [id.interactive string(i)]; + i = i + 1; +end + +% get the decision_proc +while(string(i) == ' ' || string(i) == 10 || string(i) == 13) + i = i + 1; +end + +while(string(i) ~= ')') + id.decision_proc = [id.decision_proc string(i)]; + i = i + 1; +end +new_pos = i; + +end \ No newline at end of file diff --git a/@PVS_checker/parse_paren.m b/@PVS_checker/parse_paren.m new file mode 100644 index 0000000..83111d2 --- /dev/null +++ b/@PVS_checker/parse_paren.m @@ -0,0 +1,32 @@ +%% parse_paren +% function will output the string contained within parenthesis, +% including other opening and closing parenthesis. +% inputs: +% string:string - string containing parenthesis +% pos:int - position to start reading the string from, the +% position of the oppening parenthesis +% outputs; +% paren_string:string - the string contained within the +% parenthesis +% new_pos:int - the position where the ending parenthesis was found. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [paren_string, new_pos] = parse_paren(string,pos) +% pos points to opening ( +paren_string = string(pos); +i = pos+1; + +while( string(i) ~= ')') + if (string(i) == '(') + [paren_string_temp, new_pos] = PVS_checker.parse_paren(string,i); + paren_string = [paren_string paren_string_temp]; + i = new_pos; + else + paren_string = [paren_string string(i)]; + end + i = i + 1; +end +paren_string = [paren_string string(i)]; +new_pos = i; + +end \ No newline at end of file diff --git a/@PVS_checker/parse_prf_file.m b/@PVS_checker/parse_prf_file.m new file mode 100644 index 0000000..d75d124 --- /dev/null +++ b/@PVS_checker/parse_prf_file.m @@ -0,0 +1,39 @@ +%% parse_prf_file +% function will parse a pvs prf file inputed as a string and +% return the results parsed into a stucture, parseing based on +% "Batch Proving and Proof Scripting in PVS" section 3. +% inputs: +% string:string - string containing the read in prf file. +% outputs; +% theory_id:string - Theory name +% decls:structure - structure of the declarations for the theory +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [theory_id, decls] = parse_prf_file(string) +decls = []; + +if string(1) ~= '(' + msgbox('error reading file'); +end +i = 2; +theory_id = []; +% find theory name +while (string(i) ~= ' ') + theory_id = [theory_id string(i)]; + i = i + 1; +end +% addvance to next ( +while (string(i) ~= '(') + i = i+1; +end + +while(string(i) ~= ')') + if (string(i) == '(') + pos = i; + [decl_id_temp, pos_temp] = PVS_checker.parse_decl_id(string,pos); + decls = [decls decl_id_temp]; + i = pos_temp; + end + i = i + 1; +end +end \ No newline at end of file diff --git a/@PVS_checker/parse_pvs_result.m b/@PVS_checker/parse_pvs_result.m new file mode 100644 index 0000000..bec651b --- /dev/null +++ b/@PVS_checker/parse_pvs_result.m @@ -0,0 +1,52 @@ +%% parse_pvs_result +% parse the stuff that comes back from pvs batch mode, extract +% the counter examples and theorems. +% inputs: +% object:PVS_checker - PVS_checker object +% result:string - string containing text that comes back from pvs +% outputs: +% output:structure - results parsed into structure for easier +% manipulating +% error:boolean - 0 if no error, 1 if error found during parsing. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [output error] = parse_pvs_result(object,result) +found = regexp(result,'\w+(?=[\.]{4,})|(?<=[\.]{4,})\w+','match'); +if (isempty(found)) + error = 1; + output = []; +else + seqs = []; + for i = 1:2:size(found,2)-1 + if(~strcmp(char(found(i+1)),'proved')) + + found4 = []; + % These parsing depend on the version of PVS used, + % which may be a bad idea, although pvs is not + + if object.pvs_version <= 4.0 + % find the TCC that was unprovable + search_str = sprintf('(?<=Proving formula %s[\\n]*)%s.*?(?=[ \\n]*Rerunning step)',char(found(i)),char(found(i))); + elseif object.pvs_version <= 4.2 + search_str = sprintf('(?<=Installing rewrite rule \\w+\\s\\s)%s.*?(?=[ \\n]*Rerunning step)',char(found(i))); + elseif object.pvs_version >= 5.0 + search_str = sprintf('(?<=Installing rewrite rule.*\\s\\s)%s.*?(?=[ \\n]*Rerunning step)',char(found(i))); + end + found2 = regexp(result,char(search_str),'match','once'); + + + % find the counter examples + search_str = sprintf('(?<=%s.*?substitutions:).*?(?=This will undo the proof to: \\n%s)|(?<=%s.*?)No counter-examples(?=.*?%s)',char(found(i)),char(found(i)),char(found(i)),char(found(i))); + found3 = regexp(result,char(search_str),'match','once'); + if (~strcmp(found3,'No counter-examples')) + found4 = regexp(found3,'[^\n]*(?===>)|(?<===>)[^\n]*','match'); + end + seqs = [seqs struct('id', '1234a', 'TCC', found(i), 'seq', found2, 'ce', {found4})]; + end + + end + output = seqs; + error = 0; +end +end + diff --git a/@PVS_checker/parse_status.m b/@PVS_checker/parse_status.m new file mode 100644 index 0000000..768fd27 --- /dev/null +++ b/@PVS_checker/parse_status.m @@ -0,0 +1,18 @@ +%% parse_status +% parse the result of running the pvs status script. look for a +% list of theorems and associated status return that in parsed +% list. +% inputs: +% object:PVS_checker - PVS_checker object +% string:string - string containing output of runnign pvs script +% outputs: +% parsed:array - array containing each of the theorems of the pvs +% file followed by its status so will look something like +% ['TCC1' 'proved' 'TCC2' 'unfinished']... etc +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [parsed] = parse_status(object,string) +thrms_status = regexp(string,'\w+(?=[\.]{4,})|(?<=[\.]{4,})\w+','match'); +parsed = thrms_status; + +end \ No newline at end of file diff --git a/@PVS_checker/pvs_check.m b/@PVS_checker/pvs_check.m new file mode 100644 index 0000000..17d221d --- /dev/null +++ b/@PVS_checker/pvs_check.m @@ -0,0 +1,99 @@ +%% pvs_check +% function will generate a pvs file for table, and depending on +% user input +% inputs: +% object:PVS_checker - PVS_checker object +% outputs; +% check:boolean - 0 if typecheck fails, 1 if succeds +% output:structure - if typecheck succeds then output contains +% parsed output from pvs +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [check,output] = pvs_check(object) +check = 0; +output = []; +% file name will be expression_name.m + +function_names = EMLGenerator.parse_inputs(object.data.function_name); +function_name = char(function_names{1}(1)); + + + + +error = object.generate_pvs_file(function_name); +if error == 1 + return; +elseif error == 2 + % copy pvs files over. + copyfile(fullfile(fileparts(which('TTdiag')),'PVS_theories','*.pvs'),pwd); + copyfile(fullfile(fileparts(which('TTdiag')),'PVS_theories','*.prf'),pwd); +end + + + +version_string = PVS_checker.get_pvs_version; +version = regexp(version_string, 'PVS Version (...)', 'tokens'); +object.pvs_version = str2double(char(version{1})); + + +% THIS SECTION NEEDS SOME WORK +%------------- +% delete the existing proof +% update (22/07/10): +% has been fixed up now checks if prf file exists and prompts +% user to overwrite it. + +exists = 0; +button = ''; +if (exist([function_name '.prf'],'file')) + exists = 1; + button = questdlg(['A proof file already exists for function ' function_name sprintf('\n') ' What would you like to do' sprintf('\n') 'Note: Attempting to prove will delete existing prf file'],'prf exists','Attempt to prove','Open PVS','Cancel','Cancel'); +end + +if (exists == 1 && (isempty(button) || strcmp(button,'Cancel'))) + output = 'canceled'; + return; +elseif (exists == 1 && (strcmp(button,'Open PVS'))); + [status, result] = system(['pvs ' function_name '.pvs']); + output = 'canceled'; +elseif (exists == 0 || strcmp(button,'Attempt to prove')) + box = waitbar(0,'Generating Proof Script'); + + + delete([function_name '.prf']); + + + % generate the proof script + object.generate_pvs_script(function_name,1); + waitbar(.10,box,'Running Proof'); + %--------- + % call pvs in batch mode with script + % ADD check that pvs actually exists in system + % + [status, result] = safe_execute_external_command(['pvs -batch -v 3 -l ' function_name '.el']); + %toc + %objectect.msgbox_scroll(result); + waitbar(.70,box,'Parsing Results'); + [parsed error] = object.parse_pvs_result(result); + + if (error == 1) + err_str = ['There was an error proving tabular expression ' sprintf('\n\n') 'Error string below:' sprintf('\n\n') result]; + GUI.msgbox_scroll(err_str); + else + + if (isempty(parsed)) + check = 1; + output = []; + else + output = parsed; + end + end + waitbar(.100,box,'Deleting Proof Script'); + + %delete([function_name '.el']); + + delete(box); +end +end + + diff --git a/@PVS_checker/pvs_check_for_imports.m b/@PVS_checker/pvs_check_for_imports.m new file mode 100644 index 0000000..fa31e00 --- /dev/null +++ b/@PVS_checker/pvs_check_for_imports.m @@ -0,0 +1,82 @@ +%% pvs_check_for_imports +% checks both horizontal and vertical grids for functions for +% which there is a file on the path of the same name, in which +% case create pvs code to import the pvs file for that function +% inputs: +% object:PVS_checker - PVS_checker object +% outputs: +% string:string - pvs code of imports +% +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function string = pvs_check_for_imports(object) + + + +[string,found] = object.pvs_check_for_imports_g(object.data.Grid2,{}); +[string2,found2] = object.pvs_check_for_imports_g(object.data.Grid1,found); + + + + + +% check for imports in the inputs field + + + +hashtable = {{'sqrt', 'reals@sqrt'} {'sin', 'trig@trig_basic'} {'cos', 'trig@trig_basic'} {'tan', 'trig@trig_basic'} {'double', 'double'} {'single' 'single'}} ; + +% check for imports in the results grid. +for i=1:size(object.data.Grid0.Cells,2) + + text = char(object.data.Grid0.Cells(i).result_text); + + vars = regexp(text,'([a-zA-Z][a-zA-Z0-9_]*)','match'); + + + + + for j=1:size(vars,2) + if(exist(vars{j},'file')==2 && ~strcmp(vars{j},'otherwise')) + %check if already imported file + if (~any(ismember(found,vars{j}))) + string = [string 'IMPORTING ' vars{j} sprintf('\n')]; + found = [found vars{j}]; + end + end + + for k=1:size(hashtable,2) + if strcmp(vars{j},hashtable{k}(1)) + if (~any(ismember(found,vars{j}))) + string = [string 'IMPORTING ' char(hashtable{k}(2)) sprintf('\n')]; + found = [found vars{j}]; + end + end + end + end +end + + + +for k=1:size(hashtable,2) + + string_parts = char(object.data.function_inputs); + + s = [string_parts(1,:)]; + for j = 2:size(string_parts,1) + s = [s ' ' string_parts(j,:)]; + end + string_parts = s; + + functions = regexp(string_parts,hashtable{k}(1),'once'); + if ~isempty(functions{1}) + if (~any(ismember(found,hashtable{k}(1)))) + string = [string 'IMPORTING ' char(hashtable{k}(2)) sprintf('\n')]; + found = [found hashtable{k}(1)]; + end + end + end + +string = [string string2]; +end + diff --git a/@PVS_checker/pvs_check_for_imports_g.m b/@PVS_checker/pvs_check_for_imports_g.m new file mode 100644 index 0000000..f49e9d6 --- /dev/null +++ b/@PVS_checker/pvs_check_for_imports_g.m @@ -0,0 +1,62 @@ +%% pvs_check_for_imports_g +% recursively check a grid for an imported functions, see comment +% for pvs_check_for_imports +% inputs: +% object:PVS_checker - PVS_checker object +% grid:Grid - grid to check +% found:array - list of functions already imported so we dont +% import the same thing twice. +% outputs: +% string:string - pvs code +% found:array - updated list of found functions to import +% +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [string,found] = pvs_check_for_imports_g(object,grid,found) +string = []; + +hashtable = {{'sqrt', 'reals@sqrt'} {'sin', 'trig@trig_basic'} {'cos', 'trig@trig_basic'} {'tan', 'trig@trig_basic'}}; + +for i=1:size(grid.cells,2) + % recurse through + if (~isempty(grid.cells(i).subgrid)) + string = [string object.pvs_check_for_imports_g(grid.cells(i).subgrid)]; + end + text = char(grid.cells(i).cond_text); + + if size(text) > 0 + s = [text(1,:)]; + for j = 2:size(text,1) + s = [s ' ' text(j,:)]; + end + text = s; + end + + vars = regexp(text,'([a-zA-Z][a-zA-Z0-9_]*)','match'); + + + + + for j=1:size(vars,2) + if(exist(vars{j},'file')==2 && ~strcmp(vars{j},'otherwise')) + %check if already imported file + if (~any(ismember(found,vars{j}))) + string = [string 'IMPORTING ' vars{j} sprintf('\n')]; + found = [found vars{j}]; + end + end + + for k=1:size(hashtable,2) + if strcmp(vars{j},hashtable{k}(1)) + if (~any(ismember(found,vars{j}))) + string = [string 'IMPORTING ' char(hashtable{k}(2)) sprintf('\n')]; + found = [found vars{j}]; + end + end + end + end +end +end + + + diff --git a/@PVS_checker/replace_types_sim.m b/@PVS_checker/replace_types_sim.m new file mode 100644 index 0000000..5522467 --- /dev/null +++ b/@PVS_checker/replace_types_sim.m @@ -0,0 +1,10 @@ +function [ replaced ] = replace_types_sim( pvs_type, sim_type ) +%REPLACE_TYPES_SIM Summary of this function goes here +% Detailed explanation goes here +old_type = regexp(pvs_type,':[a-zA-Z0-9]+','match'); +replaced = regexprep(pvs_type,old_type,[':' sim_type]); + + + +end + diff --git a/@PVS_checker/user_imports.m b/@PVS_checker/user_imports.m new file mode 100644 index 0000000..225f7ea --- /dev/null +++ b/@PVS_checker/user_imports.m @@ -0,0 +1,20 @@ +%% user_imports +% returns the string importing a user selected pvs file to import +% inputs: +% object:PVS_checker - PVS_checker object +% outputs; +% string:string - string of pvs code to add to generated file +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [string] = user_imports(object) +string = []; +if ~isempty(object.data.settings.inputs) + files = regexp(object.data.settings.inputs,',','split'); + + for i=1:size(files,2) + file_no_ext = regexp(files{i},'\w*(?=\.\w*)','match'); + string = [string sprintf('IMPORTING %s\n', char(file_no_ext)) ]; + end +end +end + diff --git a/@RCell/RCell.m b/@RCell/RCell.m new file mode 100644 index 0000000..24ea3de --- /dev/null +++ b/@RCell/RCell.m @@ -0,0 +1,32 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef RCell < handle + %UNTITLED2 Summary of this class goes here + % Detailed explanation goes here + + properties + Cell1 = []; + Cell2 = []; + result = []; + result_text = []; + color = []; + end + + methods + %% RCell + % Constructor + % inputs: + % cell1:Cell - cell reference in top grid + % cell2:Cell - Cell reference in left grid + % outputs; + % n:RCell - created RCell + function n = RCell(cell1,cell2) + n.Cell1 = cell1; + n.Cell2 = cell2; + end + + + end + +end + diff --git a/@RCell/flag_cell.m b/@RCell/flag_cell.m new file mode 100644 index 0000000..4bb8970 --- /dev/null +++ b/@RCell/flag_cell.m @@ -0,0 +1,29 @@ +%% flag_cell +% allows changing the background color of a cell based on an +% inputed mode +% inputs +% object:RCell - current object +% mode:int - +% 0 - normal +% 1 - red (error/false) +% 2 - green (ok/true) +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = flag_cell(object,mode) + +if (isempty(object.color)) + object.color = get(object.result,'BackgroundColor'); +end +if ishandle(object.result) + if (mode == 0) + set(object.result,'BackgroundColor',object.color); + elseif (mode == 1) + set(object.result,'BackgroundColor',[0.92 0.65 0.65]); + elseif (mode == 2) + set(object.result,'BackgroundColor',[0.03 1.0 0.32]); + end +end + +end \ No newline at end of file diff --git a/@RCell/purge.m b/@RCell/purge.m new file mode 100644 index 0000000..b82f3c4 --- /dev/null +++ b/@RCell/purge.m @@ -0,0 +1,13 @@ +%% purge +% Removes useless data from the block on saving, avoiding unnecessary +% changes and data storage. +% inputs: +% object - RCell object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function purge( object ) +object.result = []; +end + diff --git a/@RCell/upgrade.m b/@RCell/upgrade.m new file mode 100644 index 0000000..4dfaf38 --- /dev/null +++ b/@RCell/upgrade.m @@ -0,0 +1,14 @@ +%% upgrade +% Preforms any necessary upgrades to the TET to comply with the latest version. +% inputs: +% object - RCell object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function upgrade( object ) + if iscell(object.result_text) + object.result_text = object.result_text{1}; + end +end + diff --git a/@RGrid/RGrid.m b/@RGrid/RGrid.m new file mode 100644 index 0000000..b3437de --- /dev/null +++ b/@RGrid/RGrid.m @@ -0,0 +1,29 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef RGrid < handle + + + properties + Cells = []; + Grid1 = []; + Grid2 = []; + end + + methods + %% RGrid + % constructor method + % inputs: + % g1:Grid - reference to top grid + % g2:Grid - reference to left grid. + % outputs; + % n:RGrid - Created RGrid + function n = RGrid(g1, g2) + n.Grid1 = g1; + n.Grid2 = g2; + end + + + end + +end + diff --git a/@RGrid/delete_g1s.asv b/@RGrid/delete_g1s.asv new file mode 100644 index 0000000..91c4ceb --- /dev/null +++ b/@RGrid/delete_g1s.asv @@ -0,0 +1,34 @@ +%% delete_g1s +% Same as delete_g2s but we are now deleting RCell with a +% reference to the inputed cell in their Cell1 +% inputs: +% object:RGrid - reference to current RGrid +% cell:Cell - reference to cell being deleted +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = delete_g1s(object,cell) +deleted = []; +for i=1:size(object.Cells,2) + if (object.Cells(i).Cell1 == cell) + %[deleted i] %Check this one first + deleted = [deleted i]; + %deleted + end +end +if(~isempty(deleted)) + + sprintf("Res: %s\n", object.Cells(deleted).result_text) + %object.Cells(deleted).result + %{for i=1:size(object.Cells,2) + if(object.Cells(i)) + delete(object.Cells(i).result) + end +`end +%} + %delete(object.Cells(deleted).result); + %object.Cells(deleted) = []; +end +end + diff --git a/@RGrid/delete_g1s.m b/@RGrid/delete_g1s.m new file mode 100644 index 0000000..80faef3 --- /dev/null +++ b/@RGrid/delete_g1s.m @@ -0,0 +1,35 @@ +%% delete_g1s +% Same as delete_g2s but we are now deleting RCell with a +% reference to the inputed cell in their Cell1 +% inputs: +% object:RGrid - reference to current RGrid +% cell:Cell - reference to cell being deleted +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = delete_g1s(object,cell) +deleted = []; +for i=1:size(object.Cells,2) + if (object.Cells(i).Cell1 == cell) + %[deleted i] %Check this one first + deleted = [deleted i]; + %deleted + end +end +if(~isempty(deleted)) + + %sprintf("Res: %s\n", object.Cells(deleted).result_text) + %object.Cells(deleted).result + %{ + for i=1:size(object.Cells,2) + if(object.Cells(i)) + delete(object.Cells(i).result) + end + end + %} + delete(object.Cells(deleted).result); + object.Cells(deleted) = []; +end +end + diff --git a/@RGrid/delete_g2s.m b/@RGrid/delete_g2s.m new file mode 100644 index 0000000..cf356c5 --- /dev/null +++ b/@RGrid/delete_g2s.m @@ -0,0 +1,27 @@ +%% delete_g2s +% function will delete all the cells that reference an inputed +% condition cell as their Cell2. +% inputs: +% object:RGrid - reference to current RGrid +% cell:Cell - reference to cell being deleted +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = delete_g2s(object,cell) +deleted = []; +% loop through all the cells, if we find any Rcell with cell as +% its Cell2 then add the index to the array, if we were to +% delete the cell right away the array size would decrease and +% we would get out of bounds issues. +for i=1:size(object.Cells,2) + if (object.Cells(i).Cell2 == cell) + deleted = [deleted i]; + end +end +if(~isempty(deleted)) + delete(object.Cells(deleted).result); + object.Cells(deleted) = []; +end +end + diff --git a/@RGrid/new_RCell.m b/@RGrid/new_RCell.m new file mode 100644 index 0000000..7aab7a3 --- /dev/null +++ b/@RGrid/new_RCell.m @@ -0,0 +1,17 @@ +%% new_RCell +% creates a new Cell in the current RGrid +% inputs: +% object:RGrid - current RGrid object +% cell1:Cell - reference to condition cell in top grid +% cell2:Cell - reference to condition cell in left grid +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = new_RCell(object,cell1,cell2) +cell = RCell; +cell.Cell1 = cell1; +cell.Cell2 = cell2; +object.Cells = [object.Cells cell]; +end + diff --git a/@RGrid/purge.m b/@RGrid/purge.m new file mode 100644 index 0000000..1b8015a --- /dev/null +++ b/@RGrid/purge.m @@ -0,0 +1,16 @@ +%% purge +% Removes useless data from the block on saving, avoiding unnecessary +% changes and data storage. +% inputs: +% object - RGrid object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function purge( object ) +for i = 1:size(object.Cells, 2) + object.Cells(i).purge; +end + +end + diff --git a/@RGrid/refresh.m b/@RGrid/refresh.m new file mode 100644 index 0000000..6a003dc --- /dev/null +++ b/@RGrid/refresh.m @@ -0,0 +1,13 @@ +%% refresh +% calls the setup function, might add furthur functionality in +% the future to this function +% inputs: +% object:RGrid - reference to current RGrid +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = refresh(object) +object.setup(object.Grid1,object.Grid2); +end + diff --git a/@RGrid/search.m b/@RGrid/search.m new file mode 100644 index 0000000..649ded7 --- /dev/null +++ b/@RGrid/search.m @@ -0,0 +1,20 @@ +%% search +% determine wheter a results cell exists for a pair of condition +% cells. +% inputs: +% object:RGrid - reference to current RGrid +% cell1:Cell - reference to condition cell in top grid. +% cell2:Cell - reference to condition cell in left grid. +% outputs; +% cell:boolean - 1 if cell is found, 0 if cell is not found +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function cell = search(object,cell1,cell2) +cell = 0; +for i=1:size(object.Cells,2) + if (object.Cells(i).Cell1 == cell1 && object.Cells(i).Cell2 == cell2); + cell = 1; + end +end +end + diff --git a/@RGrid/search_return.m b/@RGrid/search_return.m new file mode 100644 index 0000000..aab7a64 --- /dev/null +++ b/@RGrid/search_return.m @@ -0,0 +1,21 @@ +%% search_return +% determine where a results cell exists for a pair of condition +% cells and returns the cell itself. +% inputs: +% object:rgrid - reference to current rgrid +% cell1:cell - reference to condition cell in top grid. +% cell2:cell - reference to condition cell in left grid. +% outputs; +% cell:rcell - if found returns reference to cell, if not returns +% empty +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function cell = search_return(object,cell1,cell2) +cell = []; +for i=1:size(object.Cells,2) + if (object.Cells(i).Cell1 == cell1 && object.Cells(i).Cell2 == cell2); + cell = object.Cells(i); + end +end +end + diff --git a/@RGrid/setup.m b/@RGrid/setup.m new file mode 100644 index 0000000..9dabc3b --- /dev/null +++ b/@RGrid/setup.m @@ -0,0 +1,31 @@ +%% setup +% this function will loop through all the cells in both the left +% grid and the top grid, once we reach a leaf cell for both +% grids, if there does not exist an RCell in the RGrid for both +% these leaf cells then we need to create one. +% inputs: +% object:RGrid - reference to current RGrid +% g1:Grid - reference to the top grid +% g2:Grid - reference to the left grid. +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = setup(object,g1,g2) +for i=1:size(g2.cells,2) + if (~isempty(g2.cells(i).subgrid)) + object.setup(g1,g2.cells(i).subgrid); + else + for j=1:size(g1.cells,2) + if(~isempty(g1.cells(j).subgrid)) + object.setup(g1.cells(j).subgrid,g2); + else + if (object.search(g1.cells(j),g2.cells(i)) == 0) + rcell = RCell(g1.cells(j),g2.cells(i)); + object.Cells = [object.Cells rcell]; + end + end + end + end +end +end \ No newline at end of file diff --git a/@RGrid/upgrade.m b/@RGrid/upgrade.m new file mode 100644 index 0000000..19db683 --- /dev/null +++ b/@RGrid/upgrade.m @@ -0,0 +1,14 @@ +%% upgrade +% Preforms any necessary upgrades to the TET to comply with the latest version. +% inputs: +% object - RGrid object +% outputs: +% none +% Author: Matthew Dawson +% Organization: McMaster Centre for Software Certification +function upgrade( object ) +for i = 1:size(object.Cells, 2) + object.Cells(i).upgrade; +end +end + diff --git a/@TTSettings/TTSettings.m b/@TTSettings/TTSettings.m new file mode 100644 index 0000000..edf6153 --- /dev/null +++ b/@TTSettings/TTSettings.m @@ -0,0 +1,49 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef TTSettings < handle + %UNTITLED Summary of this class goes here + % Detailed explanation goes here + + properties + % settings + pvs_includes = []; + counter_trials = []; + counter_range = []; + except = []; + + % gui elements + fig_width = 400; + fig_height = 300; + open = 0; + fig = []; + button_width = 60; + button_height = 30; + button_offset = 10; + title_height = 30; + label_height = 30; + label_width = 75; + text_offset = 10; + + include_text = []; + count_text = []; + range_text = []; + except_check = []; + end + + methods + + %% Settings + % constructor + % inputs: + % none + % outputs: + % object:Settings - created object + function object = TTSettings() + end + + + + end + +end + diff --git a/@TTSettings/apply_call.m b/@TTSettings/apply_call.m new file mode 100644 index 0000000..c50cb3e --- /dev/null +++ b/@TTSettings/apply_call.m @@ -0,0 +1,15 @@ +%% apply_call +% callback for apply button, save the settings but do not close +% figure. +% inputs: +% object:Settings - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function err = apply_call(object,src,event) +object.save; +end + diff --git a/@TTSettings/cancel_call.m b/@TTSettings/cancel_call.m new file mode 100644 index 0000000..ea47f52 --- /dev/null +++ b/@TTSettings/cancel_call.m @@ -0,0 +1,13 @@ +%% cancel_call +% callback for cancel button, cose figure don't save settings +% inputs: +% object:Settings - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = cancel_call(object,src,event) +object.close_fig([],[]); +end diff --git a/@TTSettings/close_fig.m b/@TTSettings/close_fig.m new file mode 100644 index 0000000..d764de0 --- /dev/null +++ b/@TTSettings/close_fig.m @@ -0,0 +1,16 @@ +%% close_fig +% when close button is pressed delete the figure, allow a new +% one to be opened +% inputs: +% object:Settings - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = close_fig(object,src,event) +delete(object.fig); +object.open = 0; +end + diff --git a/@TTSettings/elipse_call.m b/@TTSettings/elipse_call.m new file mode 100644 index 0000000..90b198a --- /dev/null +++ b/@TTSettings/elipse_call.m @@ -0,0 +1,30 @@ +%% elipse_call +% callback for when the elipses button is pressed, show file +% picker, update the textbox of selected files. +% inputs: +% object:Settings - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = elipse_call(object,src,event) +files = uigetfile('*.pvs','Select pvs files','MultiSelect','on'); +string = []; +if iscell(files) + for i = 1:size(files,2) + string = strcat(string,files(i)); + + if i ~= size(files,2) + string = strcat(string,', '); + + end + end + +else + string = files; +end +set(object.include_text,'String',char(string)); +end + diff --git a/@TTSettings/init.m b/@TTSettings/init.m new file mode 100644 index 0000000..867e03a --- /dev/null +++ b/@TTSettings/init.m @@ -0,0 +1,16 @@ +%% init +% +% inputs: +% object:Settings - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = init(object) +% initialize the default values of the properties +object.pvs_includes = []; +object.counter_trials = 1000; +object.counter_range = 100; +object.except = 0; +end + diff --git a/@TTSettings/ok_call.m b/@TTSettings/ok_call.m new file mode 100644 index 0000000..5b29545 --- /dev/null +++ b/@TTSettings/ok_call.m @@ -0,0 +1,17 @@ + +%% ok_call +% save settings and close figure +% inputs: +% object:Settings - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = ok_call(object,src,event) +if ~(object.save); + object.close_fig([],[]); +end + +end \ No newline at end of file diff --git a/@TTSettings/save.m b/@TTSettings/save.m new file mode 100644 index 0000000..c8c9d1d --- /dev/null +++ b/@TTSettings/save.m @@ -0,0 +1,38 @@ +%% save +% save the settigns to the object properties, check to ensure +% that user input validates. +% inputs: +% object:Settings - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function err = save(object) +msg = [] ; +err = 0; +if isempty(str2num(get(object.count_text,'String'))) + msg = [msg get(object.count_text,'String') ' is not a valid number']; + err = 1; +else + object.counter_trials = str2num(get(object.count_text,'String')); +end + +if isempty(str2num(get(object.range_text,'String'))) + msg = [msg sprintf('\n') get(object.count_text,'String') ' is not a valid number']; + err = 1; +else + object.counter_range = str2num(get(object.range_text,'String')); +end +object.pvs_includes = get(object.include_text,'String'); + +if (get(object.except_check,'value') == get(object.except_check,'Max')) + object.except = true; +else + object.except = false; +end + +if err + msgbox(msg); +end +end + diff --git a/@TTSettings/setvalues.m b/@TTSettings/setvalues.m new file mode 100644 index 0000000..7e5a755 --- /dev/null +++ b/@TTSettings/setvalues.m @@ -0,0 +1,20 @@ +%% setvalues +% update the object settings based on an inputed structure +% containing these desired values +% inputs: +% object:Settings - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = setvalues(object,settings) + +object.pvs_includes = settings.inputs; +object.counter_trials = settings.count; +object.counter_range = settings.range; +if ~isfield(settings,'except') + settings.except = 0; +end +object.except = settings.except; +end + diff --git a/@TTSettings/show.m b/@TTSettings/show.m new file mode 100644 index 0000000..c1c7311 --- /dev/null +++ b/@TTSettings/show.m @@ -0,0 +1,159 @@ +%% show +% create the figure to show the gui used to change the settings +% inputs: +% object:Settings - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = show(object) +if (object.open) + figure(object.fig); +else + + object.fig = figure('units','pixels',... + 'position',[0 0 object.fig_width object.fig_height],... + 'menubar','none',... + 'name','Settings',... + 'numbertitle','off',... + 'resize','off',... + 'CloseRequestFcn',@(src,event)close_fig(object,src,event)); +end + +% Ok Button +uicontrol('style','push',... + 'units','pix',... + 'string','Ok',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'Position',[object.fig_width - object.button_width*3 - object.button_offset*3, object.button_offset, object.button_width, object.button_height],... + 'callback',@(src,event)ok_call(object,src,event)); + +% Cancel Button +uicontrol('style','push',... + 'units','pix',... + 'string','Cancel',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'Position',[object.fig_width - object.button_width*2 - object.button_offset*2, object.button_offset, object.button_width, object.button_height],... + 'callback',@(src,event)cancel_call(object,src,event)); + + +% Apply Button +uicontrol('style','push',... + 'units','pix',... + 'string','Apply',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'Position',[object.fig_width - object.button_width - object.button_offset, object.button_offset, object.button_width, object.button_height],... + 'callback',@(src,event)apply_call(object,src,event)); + +% main label +uicontrol('style','text',... + 'string','Table Tool Settings',... + 'HorizontalAlign','center',... + 'FontWeight','bold',... + 'Parent',object.fig,... + 'Position',[0, object.fig_height-object.text_offset-object.title_height, object.fig_width, object.title_height],... + 'BackgroundColor',get(object.fig,'Color')); + +panel_height = object.text_offset*7+object.label_height*4; +panel_width = object.fig_width-object.text_offset*2; +panel = uipanel('Title','PVS',... + 'visible','on',... + 'units','pix',... + 'BackgroundColor',get(object.fig,'Color'),... + 'Position',[object.text_offset,object.fig_height-object.text_offset-object.title_height-panel_height,panel_width,panel_height]); + + +% imports label +uicontrol('style','text',... + 'string','Imports:',... + 'HorizontalAlign','left',... + 'parent',panel,... + 'Position',[object.text_offset, panel_height-object.text_offset*3-object.label_height, object.label_width, object.label_height],... + 'BackgroundColor',get(object.fig,'Color')); + +elipse_width = 20; +% import text box +object.include_text = uicontrol('style','edit',... + 'units','pix',... + 'Parent',panel,... + 'String',object.pvs_includes,... + 'HorizontalAlign','center',... + 'BackgroundColor',get(object.fig,'Color'),... + 'Position',[object.text_offset+object.label_width, panel_height-object.text_offset*2-object.label_height, panel_width - (object.text_offset*3+object.label_width+elipse_width), object.label_height]); + +% elipsis button +uicontrol('style','push',... + 'units','pix',... + 'string','...',... + 'HorizontalAlign','left',... + 'Parent',panel,... + 'Position',[panel_width-elipse_width-object.text_offset, panel_height-object.text_offset*2-object.label_height, elipse_width, object.label_height],... + 'callback',@(src,event)elipse_call(object,src,event)); + + + +% count label +uicontrol('style','text',... + 'string','Test Count:',... + 'HorizontalAlign','left',... + 'parent',panel,... + 'Position',[object.text_offset, panel_height-object.text_offset*4-object.label_height*2, object.label_width, object.label_height],... + 'BackgroundColor',get(object.fig,'Color')); + +% count text box +object.count_text = uicontrol('style','edit',... + 'units','pix',... + 'Parent',panel,... + 'String',object.counter_trials,... + 'HorizontalAlign','center',... + 'BackgroundColor',get(object.fig,'Color'),... + 'Position',[object.text_offset+object.label_width, panel_height-object.text_offset*3-object.label_height*2, panel_width - (object.text_offset*2+object.label_width), object.label_height]); + + +% range label +uicontrol('style','text',... + 'string','Test Range:',... + 'HorizontalAlign','left',... + 'parent',panel,... + 'Position',[object.text_offset, panel_height-object.text_offset*5-object.label_height*3, object.label_width, object.label_height],... + 'BackgroundColor',get(object.fig,'Color')); + +% range text box +object.range_text = uicontrol('style','edit',... + 'units','pix',... + 'Parent',panel,... + 'String',object.counter_range,... + 'HorizontalAlign','center',... + 'BackgroundColor',get(object.fig,'Color'),... + 'Position',[object.text_offset+object.label_width, panel_height-object.text_offset*4-object.label_height*3, panel_width - (object.text_offset*2+object.label_width), object.label_height]); + +% range label +uicontrol('style','text',... + 'string','Exception Output',... + 'HorizontalAlign','left',... + 'parent',panel,... + 'Position',[object.text_offset, panel_height-object.text_offset*6-object.label_height*4, object.label_width, object.label_height],... + 'BackgroundColor',get(object.fig,'Color')); + + +% range text box +object.except_check = uicontrol('style','checkbox',... + 'units','pix',... + 'Parent',panel,... + 'HorizontalAlign','center',... + 'BackgroundColor',get(object.fig,'Color'),... + 'Position',[object.text_offset+object.label_width, panel_height-object.text_offset*5-object.label_height*4, panel_width - (object.text_offset*2+object.label_width), object.label_height]); + +if (object.except) + set(object.except_check,'value',get(object.except_check,'Max')); +else + set(object.except_check,'value',get(object.except_check,'Min')); + +end +object.open = 1; +end + + diff --git a/@UndoManager/UndoManager.m b/@UndoManager/UndoManager.m new file mode 100644 index 0000000..4f4e13c --- /dev/null +++ b/@UndoManager/UndoManager.m @@ -0,0 +1,26 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef UndoManager < handle + %UNDOMANAGER Controls Undo/Redo Functionality + % UndoManager, controls a queue of actions, representing things that + % the user has done. access programs undo/redo allow for moving + % within the queue. + + properties + queue = []; + max_depth = 50; + current_depth = []; + undo_level = []; + end + + methods + + + function object = UndoManager() + object.current_depth = 0; + object.undo_level = 0; + end + end + +end + diff --git a/@UndoManager/new_state.m b/@UndoManager/new_state.m new file mode 100644 index 0000000..ebb417b --- /dev/null +++ b/@UndoManager/new_state.m @@ -0,0 +1,45 @@ +%% new_state +% when new action occurs gets add to the top of the queue of actions. +% inputs: +% object - current UndoManager object +% data:struct - data structure to specify action taken. +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [] = new_state( object, data ) + +% data object should be structure of following form. +% data.action +% data.grid +% data.cell +% data.text +% data.subgrid + +% if user has already issued an undo command before performing another +% action then perform an action, we do not allow them to redo anymore. +if (object.undo_level > 0) + object.current_depth = object.current_depth + 1; + object.queue(object.current_depth) = data; + if object.undo_level > 1 + object.queue(object.current_depth+1:object.current_depth+object.undo_level-1) = []; + end + object.undo_level = 0; +% if user is not undoing, then we make sure queue size less than max depth, +% otherwise we shift out the oldest action +else + + if (size(object.queue,2) < object.max_depth) + object.queue = [object.queue data]; + object.current_depth = object.current_depth + 1; + else + object.shift_queue_left(); + object.queue(object.current_depth) = data; + end +end + +end + + + diff --git a/@UndoManager/redo.m b/@UndoManager/redo.m new file mode 100644 index 0000000..4d3ee99 --- /dev/null +++ b/@UndoManager/redo.m @@ -0,0 +1,23 @@ +%% redo +% restores the queue if the user has undone at least once. +% inputs: +% object - current Undo +% outputs: +% data:structure - the action to be redone +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [ data ] = redo( object ) + + +if (object.undo_level == 0) + data = []; +else + object.current_depth = object.current_depth + 1; + data = object.queue(object.current_depth); + object.undo_level = object.undo_level - 1; +end + + + +end + diff --git a/@UndoManager/search_replace.m b/@UndoManager/search_replace.m new file mode 100644 index 0000000..8d75efe --- /dev/null +++ b/@UndoManager/search_replace.m @@ -0,0 +1,30 @@ +%% search_replace +% looks through the queue for action number 1s and cells equal to an +% input and replaces the cell with a new value. Used when undoing a +% delete, so that text editing can still be undone on the newly created +% textbox; +% inputs: +% object - current UndoManager +% action:int - action to look for +% prev:float - textbox handle +% new:float - textbox handle +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [ ] = search_replace( object, action, prev, new ) + +switch action + case 1 + for i=1:size(object.queue,2) + if (object.queue(i).action == 1) + if(object.queue(i).cell == prev) + object.queue(i).cell = new; + end + + end + end +end + +end + diff --git a/@UndoManager/shift_queue_left.m b/@UndoManager/shift_queue_left.m new file mode 100644 index 0000000..ab55a67 --- /dev/null +++ b/@UndoManager/shift_queue_left.m @@ -0,0 +1,28 @@ + +%% shift_queue_left +% shifts all items in the queue to the left one place, wrapping occurs. +% inputs: +% object - current UndoManager +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = shift_queue_left( object ) + +% gets called if a user changes something after they undo + +% current_object points at newly created state + +if(size(object.queue,2) <= 1) + return; +end + +temp = object.queue(1); + +for i=size(object.queue,2):-1:1 + temp1 = object.queue(i); + object.queue(i) = temp; + temp = temp1; +end + +end diff --git a/@UndoManager/shift_queue_right.m b/@UndoManager/shift_queue_right.m new file mode 100644 index 0000000..ea67e63 --- /dev/null +++ b/@UndoManager/shift_queue_right.m @@ -0,0 +1,27 @@ +%% shift_queue_right +% shifts all items in the queue to the right one place, wrapping occurs. +% inputs: +% object - current UndoManager +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification + +function [] = shift_queue_right( object ) + +% gets called if a user changes something after they undo + +% current_object points at newly created state + +temp = object.queue(size(object.queue,2)); + +for i=1:size(object.queue,2) + temp1 = object.queue(i); + object.queue(i) = temp; + temp = temp1; +end + + + +end + diff --git a/@UndoManager/undo.m b/@UndoManager/undo.m new file mode 100644 index 0000000..4abf21f --- /dev/null +++ b/@UndoManager/undo.m @@ -0,0 +1,20 @@ +%% undo +% moves backwards in the queue, if room to go backwards +% inputs: +% object - current UndoManager +% outputs: +% data:structure - action to be undone. +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [ data ] = undo( object ) +%check if we have already undone everything we can +if object.undo_level == size(object.queue,2) + data = []; +else + data = object.queue(object.current_depth); + object.current_depth = object.current_depth - 1; + object.undo_level = object.undo_level + 1; +end + +end + diff --git a/@ValidationReport/ValidationReport.m b/@ValidationReport/ValidationReport.m new file mode 100644 index 0000000..e010611 --- /dev/null +++ b/@ValidationReport/ValidationReport.m @@ -0,0 +1,59 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +classdef ValidationReport < handle + %UNTITLED Summary of this class goes here + % Detailed explanation goes here + + properties + fig = []; + PVS_results = []; + fig_height = 400; + fig_width = 800; + edit_tcc = []; + edit_seq = []; + edit_ce = []; + pb_next = []; + pb_prev = []; + pb_open = []; + label_tcc = []; + label_seq = []; + label_ce = []; + label_page = []; + label_title = []; + label_height = 15; + TCC_width = 200; + TCC_height = 200; + seq_width = 300; + seq_height = 200; + ce_width = 200; + ce_height = 200; + header_height = 60; + gui = []; + pb_nav_width = 60; + pb_nav_height = 20; + + offset = 10; + page = 1; + keyword = '1234a'; + tc_mode = []; + end + + methods + + %% ValidationReport + % constructor + % inputs: + % guinew:GUI - main gui object + % outputs: + % object:ValidationReport - current object + + function object = ValidationReport(guinew) + object.gui = guinew; + end + + + + end + +end + diff --git a/@ValidationReport/close_req_call.m b/@ValidationReport/close_req_call.m new file mode 100644 index 0000000..4fb16b7 --- /dev/null +++ b/@ValidationReport/close_req_call.m @@ -0,0 +1,20 @@ + +%% close_req_call +% when request to close object comes, update the gui so that it +% doesn't show the colours and close the figure +% inputs: +% object:ValidationReport - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = close_req_call(object,src,event) +if (object.gui.Data.open) + object.gui.check_call([],[]); +end +object.gui.validation_report_handle = 0; +delete(object.fig); +end + diff --git a/@ValidationReport/init.m b/@ValidationReport/init.m new file mode 100644 index 0000000..3917f8b --- /dev/null +++ b/@ValidationReport/init.m @@ -0,0 +1,129 @@ +%% init +% initialize the Validation report, set up the gui +% inputs: +% object:ValidationReport - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = init(object) + +if size(object.PVS_results,2) == 0 + +else + + object.fig_width = object.offset + object.TCC_width + object.offset + object.seq_width + object.offset + object.ce_width + object.offset; + object.fig_height = object.offset + object.header_height + object.offset + object.seq_height + object.offset; + + + object.fig = figure('units','pixels',... + 'position',[0, 0, object.fig_width, object.fig_height ],... + 'menubar','none',... + 'numbertitle','off',... + 'resize','off',... + 'CloseRequestFcn',@(src,event)close_req_call(object,src,event)); + + if object.tc_mode == 0 + set(object.fig,'name','PVS Report'); + else + set(object.fig,'name','CVC3 Report'); + end + + stop = 0; + i = 1; + count = 0; + + %first i will be '1234a' + + + object.edit_tcc = uicontrol('style','edit',... + 'Parent',object.fig,... + 'units','pix',... + 'min',0,'max',1,... % This is the key to multiline edits. + 'Max',2.0,... + 'fontweight','bold',... + 'BackgroundColor',[1 1 1],... + 'horizontalalign','center',... + 'fontsize',11); + + object.edit_seq = uicontrol('style','edit',... + 'Parent',object.fig,... + 'units','pix',... + 'min',0,'max',1,... % This is the key to multiline edits. + 'Max',2.0,... + 'fontweight','bold',... + 'BackgroundColor',[1 1 1],... + 'horizontalalign','left',... + 'fontsize',11); + + + object.edit_ce = uicontrol('style','edit',... + 'Parent',object.fig,... + 'units','pix',... + 'min',0,'max',1,... % This is the key to multiline edits. + 'Max',2.0,... + 'fontweight','bold',... + 'BackgroundColor',[1 1 1],... + 'horizontalalign','left',... + 'fontsize',11); + + object.pb_next = uicontrol('style','push',... + 'units','pix',... + 'string','Next',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'callback',@(src,event)pb_next_call(object,src,event)); + + if(size(object.PVS_results,2)<=1) + set(object.pb_next,'enable','off'); + end + + + object.pb_prev = uicontrol('style','push',... + 'units','pix',... + 'string','Prev',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'enable','off',... + 'callback',@(src,event)pb_prev_call(object,src,event)); + + object.label_tcc = uicontrol('style','text',... + 'string','TCC Name',... + 'HorizontalAlign','left',... + 'BackgroundColor',get(object.fig,'Color')); + object.label_seq = uicontrol('style','text',... + 'string','Sequent',... + 'HorizontalAlign','left',... + 'BackgroundColor',get(object.fig,'Color')); + object.label_ce = uicontrol('style','text',... + 'string','Counter Example',... + 'HorizontalAlign','left',... + 'BackgroundColor',get(object.fig,'Color')); + object.label_page = uicontrol('style','text',... + 'string','',... + 'HorizontalAlign','center',... + 'BackgroundColor',get(object.fig,'Color')); + object.label_title = uicontrol('style','text',... + 'string','Typecheck Summary',... + 'HorizontalAlign','left',... + 'FontWeight','bold',... + 'FontSize',15,... + 'BackgroundColor',get(object.fig,'Color')); + + if object.tc_mode == 0 + object.pb_open = uicontrol('style','push',... + 'units','pix',... + 'string','Open PVS',... + 'HorizontalAlign','left',... + 'Parent',object.fig,... + 'enable','on',... + 'callback',@(src,event)pb_open_call(object,src,event)); + end + + object.position; + object.populate; + object.gui.validation_report_handle = object.fig; +end + +end + diff --git a/@ValidationReport/pb_next_call.m b/@ValidationReport/pb_next_call.m new file mode 100644 index 0000000..b531f9f --- /dev/null +++ b/@ValidationReport/pb_next_call.m @@ -0,0 +1,21 @@ +%% pb_next_call +% callback for the next button, move to the next +% record, update the gui objects. +% inputs: +% objectect:Settings - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pb_next_call(object,src,event) +object.page = object.page + 1; +object.populate; +if (object.page == size(object.PVS_results,2)) + set(src,'enable','off'); + + +end +set(object.pb_prev,'enable','on'); +end diff --git a/@ValidationReport/pb_open_call.m b/@ValidationReport/pb_open_call.m new file mode 100644 index 0000000..12fe103 --- /dev/null +++ b/@ValidationReport/pb_open_call.m @@ -0,0 +1,16 @@ +%% pb_open_call +% callback for the open button, opens pvs to the pvs file being +% used. +% inputs: +% object:ValidationReport - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pb_open_call(object,src,event) +[status, result] = system(['pvs ' get(object.gui.function_name_control,'String') '.pvs']); + +end + diff --git a/@ValidationReport/pb_prev_call.m b/@ValidationReport/pb_prev_call.m new file mode 100644 index 0000000..ea8e5aa --- /dev/null +++ b/@ValidationReport/pb_prev_call.m @@ -0,0 +1,22 @@ +%% pb_prev_call +% callback for the previous button, move to the previous +% record, update the gui objects. +% inputs: +% object:ValidationReport - current object +% src - source of the callback calling +% event - event that triggered the callback +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = pb_prev_call(object,src,event) +object.page = object.page - 1; +object.populate; +if(object.page == 1) + set(src,'enable','off'); + +end +set(object.pb_next,'enable','on'); +end + + diff --git a/@ValidationReport/populate.m b/@ValidationReport/populate.m new file mode 100644 index 0000000..d8d1da0 --- /dev/null +++ b/@ValidationReport/populate.m @@ -0,0 +1,60 @@ +%% populate +% update all the textboxes to the current page of the pvs +% results +% inputs: +% object:ValidationReport - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = populate(object) +% temporarily used to reset colours +object.gui.check_call([],[]); +set(object.edit_tcc,'string',char(object.PVS_results(object.page).TCC)); +set(object.edit_seq,'string',char(object.PVS_results(object.page).seq)); +set(object.label_page,'string',[num2str(object.page) ' of ' num2str(size(object.PVS_results,2))]); +counter = []; +counter_display = []; +enum_array = []; +if size(object.PVS_results(object.page).ce,2) == 0 + counter_display = ['no counter example generated']; + +else + for i = 1:2:size(object.PVS_results(object.page).ce,2) + + + % need to do some translation back to matlab syntax + new_value = regexprep(char(object.PVS_results(object.page).ce(i+1)),'FALSE',' 0 '); + new_value = regexprep(new_value,'TRUE',' 1 '); + % try to evaluate what gets returned might be a fraction, if it is + % an enumerated type need to do some more work. + + % check if new_value contains any characters [a-zA-z] + isstring = regexp(char(new_value),'[a-zA-Z]','match'); + if ~isempty(isstring) + % value is an alpha string + + % search in list if alpha already assigned + [found, index] = ismember(char(new_value),enum_array); + if found + value = index; + else + enum_array = [enum_array {char(new_value)}]; + value = size(enum_array,2); + end + else + % value is numeric + eval(['value = ' char(new_value) ';']); + new_value = num2str(value); + end + + % need different string for output vs evaulation + counter_display = [counter_display char(object.PVS_results(object.page).ce(i)) ' = ' char(new_value) ';' sprintf('\n')]; + counter = [counter char(object.PVS_results(object.page).ce(i)) ' = ' num2str(value) ';' sprintf('\n')]; + end + + + object.gui.evaluate_counter(counter); +end +set(object.edit_ce,'string',counter_display); +end \ No newline at end of file diff --git a/@ValidationReport/position.m b/@ValidationReport/position.m new file mode 100644 index 0000000..a8beb12 --- /dev/null +++ b/@ValidationReport/position.m @@ -0,0 +1,24 @@ +%% position +% set the position of all the gui elements +% inputs: +% object:ValidationReport - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = position(object) +set(object.edit_tcc,'position',[object.offset, (object.fig_height - object.offset - object.header_height - object.offset - object.seq_height) ,object.TCC_width,object.TCC_height]); +set(object.edit_seq,'position',[object.offset + object.TCC_width + object.offset, (object.fig_height - object.offset - object.header_height - object.offset - object.seq_height),object.seq_width,object.seq_height]); +set(object.edit_ce, 'position',[object.offset + object.TCC_width + object.offset + object.seq_width + object.offset, (object.fig_height - object.offset - object.header_height - object.offset - object.seq_height) ,object.ce_width,object.ce_height]); + +set(object.label_tcc,'position',[object.offset, (object.fig_height - object.offset - object.header_height) ,object.TCC_width,object.label_height]); +set(object.label_seq,'position',[object.offset + object.TCC_width + object.offset, (object.fig_height - object.offset - object.header_height) ,object.TCC_width,object.label_height]); +set(object.label_ce,'position',[object.offset + object.TCC_width + object.offset + object.seq_width + object.offset, (object.fig_height - object.offset - object.header_height) ,object.TCC_width,object.label_height]); + +set(object.label_title,'position',[object.offset, (object.fig_height - object.offset - object.label_height*2) ,object.TCC_width,object.label_height*2]); +set(object.label_page,'position',[object.fig_width-object.pb_nav_width*2-object.offset*2, object.fig_height-object.offset-object.header_height+object.label_height+object.pb_nav_height+object.offset/2,object.pb_nav_width*2+object.offset,object.pb_nav_height]); +set(object.pb_next,'position',[object.fig_width - object.pb_nav_width - object.offset, object.fig_height - object.offset - object.header_height + object.label_height + object.offset/2, object.pb_nav_width, object.pb_nav_height]); +set(object.pb_prev,'position',[object.fig_width - object.pb_nav_width - object.offset - object.offset - object.pb_nav_width, object.fig_height - object.offset - object.header_height + object.label_height+object.offset/2, object.pb_nav_width, object.pb_nav_height]); +set(object.pb_open,'position',[object.fig_width - object.pb_nav_width - object.offset - object.offset - object.pb_nav_width - object.offset - object.pb_nav_width, object.fig_height - object.offset - object.header_height + object.label_height+object.offset/2, object.pb_nav_width, object.pb_nav_height]); +end + diff --git a/@ValidationReport/set_mode.m b/@ValidationReport/set_mode.m new file mode 100644 index 0000000..6624a63 --- /dev/null +++ b/@ValidationReport/set_mode.m @@ -0,0 +1,10 @@ +function set_mode( object, in_mode ) +%SET_MODE Summary of this function goes here +% Detailed explanation goes here + +% 1 = CVC +% 0 = PVS +object.tc_mode = in_mode; + +end + diff --git a/@ValidationReport/set_results.m b/@ValidationReport/set_results.m new file mode 100644 index 0000000..a4a3e19 --- /dev/null +++ b/@ValidationReport/set_results.m @@ -0,0 +1,12 @@ +%% set_results +% set the results property +% inputs: +% object:ValidationReport - current object +% outputs: +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = set_results(object,res) +object.PVS_results = res; +end + diff --git a/Examples/Jin_Parnas_Example.mdl b/Examples/Jin_Parnas_Example.mdl new file mode 100644 index 0000000..a406437 --- /dev/null +++ b/Examples/Jin_Parnas_Example.mdl @@ -0,0 +1,1807 @@ +# MathWorks OPC Text Package +Model { + Version 10.4 + Description "Simulink model saved in R2021b" +} +__MWOPC_PACKAGE_BEGIN__ R2021b +__MWOPC_PART_BEGIN__ /[Content_Types].xml + + + + + + + + + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /_rels/.rels + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml + + + model + 2011-01-24T17:34:29Z + colin + pesaraamarasekera + 2022-05-11T19:00:14Z + 24.6 + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml + + + application/vnd.mathworks.simulink.model + Simulink Model + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml + + + abce9988-b179-4d74-8247-4a8bc6729a99 + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml + + + + 9.11.0.1809720 + R2021b + Update 1 + Nov 02 2021 + 3710740051 + + +__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml + + + +

center

+

middle

+
+ + + + + + + + + +

4

+

bar

+

off

+
+ +

1

+

off

+

Port number

+

off

+

[]

+

[]

+

Inherit: auto

+

off

+

off

+

inherit

+

-1

+

Inherit

+

-1

+

auto

+

auto

+

off

+

off

+

on

+
+ +

1

+

off

+

Port number

+

off

+

[]

+

[]

+

Inherit: auto

+

off

+

off

+

inherit

+

-1

+

Inherit

+

-1

+

auto

+

auto

+

off

+

Dialog

+

held

+

[]

+

off

+

off

+

0

+

on

+
+ +

system

+

''

+

[]

+

auto

+
+ +

FromPortIcon

+

ReadWrite

+

All

+

off

+

off

+

Sample time

+

-1

+

Auto

+

Auto

+

Auto

+

void_void

+

off

+

off

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

off

+

UseLocalSettings

+

AllNumericTypes

+

UseLocalSettings

+

off

+

off

+

NONE

+

off

+

expression

+

update diagram

+

off

+

off

+

on

+

off

+

off

+

off

+

0

+

off

+

off

+
+ +
+
+ +__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64 +AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAACQTAAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA +AGBMAAABAAAAAAAAAAIAAABgTAAAAAFJTQAAAAAOAAAAwEsAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAeEsAAAYAAAAI +AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAADhL +AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAACgAAAAAQAAAAEAAAAAAAAADgAAAGgPAAAGAAAACAAA +AAkAAAAAAAAABQAAAAgAAAA4DwAAAQAAAAEAAAAAAAAAAgAAADgPAAADAAAALAAAANgBAAA4AgAA +OAIAAMgFAAAIDgAAOA8AAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf +aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs +bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl +bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0 +X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90 +ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH +cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv +bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA +AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAlAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAkAAAABAAA +AAAAAAAAAAAAAAAAAAMAAAAPAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAQAAAAAAAAAAAAAA +AAAAAAUAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAC +AAAAAgAAAAAAAAAAAAAAAAAAAAgAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAkAAAANAAAAAgAAAAAA +AAAAAAAAAAAAAAoAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAHAAAAAgAAAAAAAAAAAAAAAAAA +AAwAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAGAAAAAgAAAAAAAAAAAAAAAAAAAA4AAAAMAAAA +AQAAAAAAAAAAAAAAAAAAAA8AAAALAAAAAgAAAAAAAAAAAAAAAAAAABAAAAAJAAAAAgAAAAAAAAAA +AAAAAAAAABEAAAAKAAAABAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABAAAAAAAAAAAAAAAAAAAABMA +AAARAAAABAAAAAAAAAAAAAAAAAAAABQAAAASAAAABAAAAAAAAAAAAAAAAAAAABUAAAATAAAABAAA +AAAAAAAAAAAAAAAAABYAAAAUAAAABAAAAAAAAAAAAAAAAAAAABcAAAAVAAAABAAAAAAAAAAAAAAA +AAAAABgAAAAWAAAABAAAAAAAAAAAAAAAAAAAABkAAAAXAAAABAAAAAAAAAAAAAAAAAAAABoAAAAY +AAAABAAAAAAAAAAAAAAAAAAAABsAAAAZAAAABAAAAAAAAAAAAAAAAAAAABwAAAAaAAAABAAAAAAA +AAAAAAAAAAAAAB0AAAAbAAAABAAAAAAAAAAAAAAAAAAAAB4AAAAcAAAABAAAAAAAAAAAAAAAAAAA +AB8AAAAdAAAABAAAAAAAAAAAAAAAAAAAACAAAAAeAAAABAAAAAAAAAAAAAAAAAAAACEAAAAfAAAA +BAAAAAAAAAAAAAAAAAAAACIAAAAgAAAABAAAAAAAAAAAAAAAAAAAACMAAAAhAAAABAAAAAAAAAAA +AAAAAAAAACQAAAAiAAAABAAAAAAAAAAAAAAAAAAAACUAAAAjAAAAAAAAAAAAAAAJAAAAAQAAAAEA +AACTAAAAHwAAAAEAAACUAAAAIAAAAAEAAACVAAAAJQAAAAEAAACWAAAAJgAAAAEAAACXAAAAJwAA +AAEAAACYAAAAKAAAAAEAAACZAAAAKQAAAAEAAACaAAAAKgAAAAEAAACbAAAAAwAAAAIAAAABAAAA +kAAAAB8AAAABAAAAkQAAACAAAAABAAAAkgAAAAQAAAADAAAAAQAAABAAAAAhAAAAAQAAAEkAAAAi +AAAAAQAAAEoAAAAXAAAAAQAAAEsAAAAAAAAABAAAAAQAAAABAAAAAAAAAAUAAAABAAAAAQAAAAYA +AAABAAAADgAAABAAAAABAAAADwAAAAAAAAAEAAAABwAAAAEAAAAKAAAACwAAAAEAAAALAAAADAAA +AAEAAAAMAAAADQAAAAEAAAANAAAAAAAAAAQAAAAEAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAGAAAA +AQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABAAAAAQAAAABAAAABgAAAAUAAAABAAAABwAAAAYAAAAB +AAAACAAAABAAAAABAAAACQAAAAAAAAAGAAAABAAAAAEAAAARAAAABQAAAAEAAAASAAAABgAAAAEA +AABFAAAAFAAAAAEAAABGAAAAFQAAAAEAAABHAAAAEAAAAAEAAABIAAAAAAAAAAQAAAAHAAAAAQAA +AEEAAAALAAAAAQAAAEIAAAAMAAAAAQAAAEMAAAANAAAAAQAAAEQAAAAAAAAABgAAABIAAAABAAAA +JAAAAAQAAAABAAAAJQAAAAUAAAABAAAAJgAAAAYAAAABAAAAJwAAABQAAAABAAAAKAAAABUAAAAB +AAAAKQAAAAAAAAAFAAAACQAAAAEAAAATAAAABwAAAAEAAAAgAAAACwAAAAEAAAAhAAAADAAAAAEA +AAAiAAAADQAAAAEAAAAjAAAABgAAAAQAAAABAAAAFAAAAAUAAAABAAAAFQAAAAYAAAABAAAAFgAA +ABQAAAABAAAAFwAAABUAAAABAAAAGAAAABAAAAABAAAAGQAAAAAAAAAGAAAABAAAAAEAAAAaAAAA +BQAAAAEAAAAbAAAABgAAAAEAAAAcAAAAFAAAAAEAAAAdAAAAFQAAAAEAAAAeAAAAEAAAAAEAAAAf +AAAAAAAAAAYAAAASAAAAAQAAADsAAAAEAAAAAQAAADwAAAAFAAAAAQAAAD0AAAAGAAAAAQAAAD4A +AAAUAAAAAQAAAD8AAAAVAAAAAQAAAEAAAAAAAAAABQAAAAkAAAABAAAAKgAAAAcAAAABAAAANwAA +AAsAAAABAAAAOAAAAAwAAAABAAAAOQAAAA0AAAABAAAAOgAAAAYAAAAEAAAAAQAAACsAAAAFAAAA +AQAAACwAAAAGAAAAAQAAAC0AAAAUAAAAAQAAAC4AAAAVAAAAAQAAAC8AAAAQAAAAAQAAADAAAAAA +AAAABgAAAAQAAAABAAAAMQAAAAUAAAABAAAAMgAAAAYAAAABAAAAMwAAABQAAAABAAAANAAAABUA +AAABAAAANQAAABAAAAABAAAANgAAAAAAAAAEAAAAAwAAAAEAAABMAAAAIQAAAAEAAABNAAAAIgAA +AAEAAABOAAAAFwAAAAEAAABPAAAAAAAAAAQAAAADAAAAAQAAAFAAAAAhAAAAAQAAAFEAAAAiAAAA +AQAAAFIAAAAXAAAAAQAAAFMAAAAAAAAABAAAAAMAAAABAAAAVAAAACEAAAABAAAAVQAAACIAAAAB +AAAAVgAAABcAAAABAAAAVwAAAAAAAAAEAAAAAwAAAAEAAABYAAAAIQAAAAEAAABZAAAAIgAAAAEA +AABaAAAAFwAAAAEAAABbAAAAAAAAAAQAAAADAAAAAQAAAFwAAAAhAAAAAQAAAF0AAAAiAAAAAQAA +AF4AAAAXAAAAAQAAAF8AAAAAAAAABAAAAAMAAAABAAAAYAAAACEAAAABAAAAYQAAACIAAAABAAAA +YgAAABcAAAABAAAAYwAAAAAAAAAEAAAAAwAAAAEAAABkAAAAIQAAAAEAAABlAAAAIgAAAAEAAABm +AAAAFwAAAAEAAABnAAAAAAAAAAQAAAADAAAAAQAAAGgAAAAhAAAAAQAAAGkAAAAiAAAAAQAAAGoA +AAAXAAAAAQAAAGsAAAAAAAAAAwAAAAMAAAABAAAAbAAAACEAAAABAAAAbQAAACIAAAABAAAAbgAA +AAMAAAADAAAAAQAAAG8AAAAhAAAAAQAAAHAAAAAiAAAAAQAAAHEAAAADAAAAAwAAAAEAAAByAAAA +IQAAAAEAAABzAAAAIgAAAAEAAAB0AAAAAwAAAAMAAAABAAAAdQAAACEAAAABAAAAdgAAACIAAAAB +AAAAdwAAAAMAAAADAAAAAQAAAHgAAAAhAAAAAQAAAHkAAAAiAAAAAQAAAHoAAAADAAAAAwAAAAEA +AAB7AAAAIQAAAAEAAAB8AAAAIgAAAAEAAAB9AAAAAwAAAAMAAAABAAAAfgAAACEAAAABAAAAfwAA +ACIAAAABAAAAgAAAAAMAAAADAAAAAQAAAIEAAAAhAAAAAQAAAIIAAAAiAAAAAQAAAIMAAAADAAAA +AwAAAAEAAACEAAAAIQAAAAEAAACFAAAAIgAAAAEAAACGAAAAAwAAAAMAAAABAAAAhwAAACEAAAAB +AAAAiAAAACIAAAABAAAAiQAAAAMAAAADAAAAAQAAAIoAAAAhAAAAAQAAAIsAAAAiAAAAAQAAAIwA +AAADAAAAAwAAAAEAAACNAAAAIQAAAAEAAACOAAAAIgAAAAEAAACPAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA4AAAAAAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAA +AAAAEAADAHg8MAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAA +AAEAAAAAAAAAEAAEAHg9PTAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAOAAAAOAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAA +ADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHg+MAAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AAhADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAIAAAAAQAAAAEAAAAAAAAABgAAACAAAAAAAADdAgAAAAEAAAADAAAABAAAAAYAAAAH +AAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAACEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA +AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAAAgAAAA4AAAAwAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB5PDAADgAAADgAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA +AQAAAAoAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAAEAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACwAAAAEAAAAOAAAAOAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAA8D8OAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAA +AAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA +AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAALAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4A +AABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABwAAAAEAAAABAAAAAAAAAAYAAAAcAAAAAAAA +3QIAAAABAAAAAgAAAAwAAAANAAAAAgAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAACwAAAAEAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAeT09MA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAA +AQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAARADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADgAAAAIAAAAOAAAAMAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAPAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAA +AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAA8A +AAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAHAAAAAQAAAAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAAEAAAABEAAAACAAAAAAAA +AA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA +AAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ +AAAACAAAAAAAAAAAAAhADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAA +AQAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB5 +PjAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAAAIQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA +AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAkAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAABEAOAAAAUAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAgAAAABAAAAAQAAAAAAAAAGAAAAIAAAAAAAAN0CAAAAAQAA +AAMAAAAIAAAACgAAAA4AAAACAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAIQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAA +AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAAkAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAA +CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB +AAAACAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAHAAAAAQAAAAAA +AAAQAAAABwAAAHheMi15XjIADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAA +AAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAE +AAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA +AAAYAAAAAAAA3QIAAAABAAAAAQAAAAoAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA +AAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHgreQAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABI +AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA +AAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAAHAAAAAQAAAAAAAAAQAAAABwAAAHheMit5XjIADgAAAEgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAA +AAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAGAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAC +AAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABwAAAAEAAAAAAAAAEAAAAAcA +AAB4XjIreV4yAA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAA +AAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABgAAAAIAAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAAKAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AAcAAAABAAAAAAAAABAAAAAHAAAAeF4yLXleMgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABI +AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA +AAABAAAAAQAAAAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADgAAAAIAAAAOAAAAMAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCt5AA4AAABIAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAA +AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAAAgAAAA4AAAA4 +AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAcAAAABAAAAAAAAABAAAAAHAAAAeF4yLXle +MgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAA +AAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAACAAAADgAAAEgAAAAG +AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA +AAABAAAACgAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAA +AAAAAAAQAAMAeCt5AA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA +AAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAIA +AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAAAOAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA +AQAAAAcAAAABAAAAAAAAABAAAAAHAAAAeF4yK3leMgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA +AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADAAAAAIAAAAOAAAAMAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAADAAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAACAAAADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAADAAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAA +AAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA +AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +DQAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQ +AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA +AAAYAAAAAAAA3QIAAAABAAAAAQAAAAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADQAAAAIAAAAOAAAA +MAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABI +AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA +AAABAAAAAQAAAAcAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADQAAAAIAAAAOAAAAMAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQA +AAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAAEAAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA +CAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAYAAAACAAAADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA +AAEAAAABAAAAEAAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAA +AQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB +AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAACAAAADgAAAEgAAAAGAAAACAAAAA0A +AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAEAAA +AAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAA +AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAEQAAAAIAAAAOAAAAMAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAEQAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAA +AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAAC +AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAAEQAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA +AAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAACYAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +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 +AQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAGlADgAAADgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABOQA4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAAJEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAAA0QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAPkAOAAAA+AAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAFAAQABgAAAAEAAAASAAAAQ2VsbHMAR3JpZDEAR3JpZDIAAAAAAAAA +DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO +AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A +AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA +AJABAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAwAAAABAAAA +PAAAAENlbGwxAAAAAAAAAENlbGwyAAAAAAAAAHJlc3VsdAAAAAAAAHJlc3VsdF90ZXh0AGNvbG9y +AAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA +AAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA +AAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA +CQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ +AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkA +AAAAAAAADgAAAAgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE +ABAAAAABAAAAoAAAAEdyaWQwAAAAAAAAAAAAAABHcmlkMQAAAAAAAAAAAAAAR3JpZDIAAAAAAAAA +AAAAAGZ1bmN0aW9uX25hbWUAAABmdW5jdGlvbl9pbnB1dHMAc2V0dGluZ3MAAAAAAAAAAGNoZWNr +ZWQAAAAAAAAAAABvcGVuAAAAAAAAAAAAAAAAZmlnAAAAAAAAAAAAAAAAAG11bHRpX21vZGUAAAAA +AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA +AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA +DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO +AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A +AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA +ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA +MAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAw +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACIAAAA +BgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAAAFgAAAABAAAAAAAAAAIAAABYAAAAAAFJTQAAAAAO +AAAASAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEA +AAAFAAAATUNPUwAAAAAOAAAAAAAAAA +__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml + + + +

d91b9340-11b3-4720-b3f2-114dad2e3656

+

maci64

+ +

%<Auto>

+

%<Auto>

+

574181997

+

%<AutoIncrement:24.6>

+
+ +

none

+
+ +

normal

+ +

$bdroot

+ + $bdroot + + + + +
+
+ +

warning

+
+ + +

Ensure deterministic transfer (maximum delay)

+

Ensure data integrity only

+

Ensure deterministic transfer (minimum delay)

+

None

+
+
+ +
+
+ +__MWOPC_PART_BEGIN__ /simulink/configSet0.xml + + + +

[]

+

+ + +

[]

+

+

[]

+

0.0

+

10.0

+

auto

+

on

+

auto

+

auto

+

5

+

auto

+

10*128*eps

+

1000

+

4

+

1

+

auto

+

auto

+

1

+

1e-3

+

on

+

off

+

off

+

ode45

+

auto

+

auto

+

DisableAll

+

UseLocalSettings

+

Nonadaptive

+

TrustRegion

+

off

+

off

+

Fast

+

off

+

off

+

Unconstrained

+

Whenever possible

+

[]

+

off

+

off

+

ode3

+
+ +

[]

+

+

[]

+

1

+

[t, u]

+

xFinal

+

xInitial

+

on

+

1000

+

off

+

off

+

off

+

off

+

Array

+

ModelDataLogs

+

on

+

off

+

on

+

on

+

off

+

on

+

off

+

streamout

+

on

+

off

+

xout

+

tout

+

yout

+

logsout

+

dsmout

+

RefineOutputTimes

+

[]

+

out

+

1

+

off

+

timeseries

+

out.mat

+

[-inf, inf]

+
+ + + BooleansAsBitfields + PassReuseOutputArgsAs + PassReuseOutputArgsThreshold + ZeroExternalMemoryAtStartup + ZeroInternalMemoryAtStartup + OptimizeModelRefInitCode + NoFixptDivByZeroProtection + UseSpecifiedMinMax + EfficientTunableParamExpr + +

+

[]

+

on

+

on

+

on

+

Tunable

+

off

+

off

+

off

+

off

+

double

+

off

+

off

+

on

+

on

+

off

+

off

+

on

+

off

+

+

on

+

off

+

uint_T

+

Same as modeled

+

on

+

64

+

Structure reference

+

12

+

2147483647

+

on

+

5

+

off

+

off

+

Native Integer

+

on

+

on

+

off

+

off

+

off

+

on

+

inf

+

Inherit from target

+

on

+

off

+

off

+

off

+

on

+

on

+

off

+

off

+

level2

+

Balanced

+

on

+

off

+

off

+

GradualUnderflow

+

off

+
+ + + UseOnlyExistingSharedCode + +

+

[]

+

error

+

none

+

none

+

none

+

error

+

none

+

UseLocalSettings

+

UseLocalSettings

+

UseLocalSettings

+

warning

+

warning

+

warning

+

warning

+

on

+

Classic

+

none

+

off

+

UseLocalSettings

+

warning

+

warning

+

none

+

error

+

warning

+

warning

+

warning

+

warning

+

error

+

error

+

error

+

none

+

warning

+

none

+

warning

+

none

+

warning

+

warning

+

error

+

error

+

none

+

warning

+

warning

+

none

+

none

+

none

+

none

+

none

+

none

+

warning

+

none

+

warning

+

warning

+

warning

+

error

+

none

+

error

+

none

+

warning

+

warning

+

UseLocalSettings

+

on

+

off

+

none

+

error

+

none

+

none

+

warning

+

warning

+

none

+

warning

+

error

+

warning

+

warning

+

error

+

none

+

warning

+

none

+

warning

+

ErrorLevel1

+

WarnAndRepair

+

none

+

warning

+

warning

+

error

+

error

+

none

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

error

+

warning

+

warning

+

none

+

warning

+

warning

+

all

+

warning

+

on

+

warning

+

warning

+

off

+

+

none

+

off

+

warning

+

none

+
+ +

[]

+

+

[]

+

8

+

16

+

32

+

32

+

64

+

32

+

64

+

32

+

32

+

32

+

Char

+

None

+

Undefined

+

Unspecified

+

32

+

on

+

off

+

32-bit Generic

+

8

+

16

+

32

+

32

+

64

+

32

+

64

+

32

+

32

+

32

+

Char

+

None

+

on

+

off

+

Undefined

+

Unspecified

+

32

+

32

+

32

+

Specified

+

off

+

on

+

on

+

on

+

EmbeddedCoderHSP

+
+ +

[]

+

+

[]

+

IfOutOfDateOrStructuralChange

+

on

+

error

+

off

+

on

+

None

+

Multi

+

Infer from blocks in model

+

+

on

+

off

+

off

+

off

+
+ +

[]

+

+

[]

+

+

+

+

+

[]

+

+

+

+

+

+

+

on

+

on

+

on

+

off

+

off

+

off

+

off

+

off

+

on

+

50

+

on

+

on

+

on

+

65536

+

off

+

[]

+

NotSpecified

+

UseInterfaceOnly

+

off

+

None

+

+

generic

+

C

+

off

+

200

+

1024

+

off

+

+

+

mkl-dnn

+

on

+
+ + + IncludeHyperlinkInReport + GenerateTraceInfo + GenerateTraceReport + GenerateTraceReportSl + GenerateTraceReportSf + GenerateTraceReportEml + PortableWordSizes + GenerateWebview + GenerateCodeMetricsReport + GenerateCodeReplacementReport + GenerateMissedCodeReplacementReport + GenerateErtSFunction + CreateSILPILBlock + CodeExecutionProfiling + CodeProfilingSaveOptions + CodeProfilingInstrumentation + CodeStackProfiling + +

+

grt.tlc

+

None

+

off

+

off

+

+

off

+

make_rtw

+

on

+

off

+

+

grt_default_tmf

+

+

off

+

on

+

off

+

[]

+

off

+

off

+

off

+

off

+

off

+

off

+

+

+

+

+

+

+

+

+

+

+

+

Automatically locate an installed toolchain

+

Faster Builds

+

[]

+

off

+

off

+

off

+

None

+

off

+

executionProfile

+

SummaryOnly

+

off

+

off

+

C

+

None

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

[]

+

+

Off

+

1024

+

+

-1

+

discrete

+

200

+

off

+

1024

+

on

+

on

+

on

+

off

+

3.5

+

+

+

0

+

none

+

on

+

19.05

+

unspecified

+ + + + IgnoreCustomStorageClasses + IgnoreTestpoints + InsertBlockDesc + SFDataObjDesc + SimulinkDataObjDesc + DefineNamingRule + SignalNamingRule + ParamNamingRule + InlinedPrmAccess + CustomSymbolStr + CustomSymbolStrGlobalVar + CustomSymbolStrType + CustomSymbolStrField + CustomSymbolStrFcn + CustomSymbolStrFcnArg + CustomSymbolStrBlkIO + CustomSymbolStrTmpVar + CustomSymbolStrMacro + ReqsInCode + BlockCommentType + InsertPolySpaceComments + MATLABFcnDesc + InternalIdentifier + CustomSymbolStrModelFcn + CustomSymbolStrUtil + CustomSymbolStrEmxType + CustomSymbolStrEmxFcn + CustomUserTokenString + +

+

[]

+

+

off

+

on

+

Auto

+

on

+

off

+

31

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

1

+

8

+

$R$N$M

+

$N$R$M_T

+

$N$M

+

$R$N$M$F

+

$R$N

+

rt$I$N$M

+

rtb_$N$M

+

$N$M

+

$R$N$M

+

$N$C

+

emxArray_$M$N

+

emx$M$N

+

+

+

None

+

+

None

+

+

None

+

+

off

+

off

+

on

+

BlockPathComment

+

on

+

off

+

off

+

+

Shortened

+

Literals

+

off

+

off

+

[]

+

error

+
+ + + GeneratePreprocessorConditionals + IncludeMdlTerminateFcn + RemoveResetFunc + SuppressErrorStatus + ERTCustomFileBanners + GenerateSampleERTMain + GenerateTestInterfaces + ModelStepFunctionPrototypeControlCompliant + CPPClassGenCompliant + PortableWordSizes + PurelyIntegerCode + PreserveStateflowLocalDataDimensions + SupportComplex + SupportAbsoluteTime + SupportContinuousTime + SupportNonInlinedSFcns + GenerateAllocFcn + ExistingSharedCode + ParenthesesLevel + ERTMultiwordTypeDef + MultiwordTypeDef + RemoveDisableFunc + +

+

[]

+

ansi_tfl_table_tmw.mat

+

+

+

NOT IN USE

+

C89/C90 (ANSI)

+

None

+

Auto

+

System defined

+

2048

+

256

+

on

+

off

+

+

off

+

off

+

on

+

on

+

on

+

on

+

on

+

off

+

off

+

off

+

off

+

Auto

+

off

+

on

+

rt_

+

on

+

Nonreusable function

+

off

+

on

+

on

+

on

+

on

+

off

+

off

+

off

+

Nominal

+

Nominal

+

Simulink.SoftwareTarget.GRTCustomization

+

off

+

on

+

off

+

off

+

on

+

off

+

on

+

on

+

[]

+

[]

+

1,2,3,4,...

+

Size,Breakpoints,Table

+

Size,Breakpoints,Table

+

Column-major

+

error

+

$R$E

+

$R$E

+

$R_data

+ + None + +

off

+

off

+

off

+

off

+

1000000

+

0

+

ext_comm

+

+

Level1

+

off

+

off

+

off

+

off

+

off

+

Error

+
+
+
+ +

[]

+

Simulink Coverage Configuration Component

+

[]

+

Simulink Coverage

+

off

+

EntireSystem

+

on

+

off

+

/

+

covdata

+

+

dw

+

+

+

off

+

on

+

on

+

on

+

on

+

covCumulativeData

+

off

+

on

+

slcov_output/$ModelName$

+

$ModelName$_cvdata

+

on

+

off

+

+

off

+

on

+

1e-05

+

0.01

+

off

+

0

+

0

+

Masking

+
+
+

Configuration

+

Solver

+

[ 200, 74, 1080, 704 ]

+

+

+
+ +__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml + + + Configuration + + +__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml + + +

0

+

0

+

+

0

+

0

+

0

+

0

+

0

+

0

+

0

+

Unset

+

0

+

Simulink

+

0

+

0

+

1

+
+ +__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml + + + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml + + + + + + + + + false + Default + -2147483648 + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml + + + + + HighNumberFirst + Default + + + + + + Default + graph.Graph + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_8.xml + + +

jin_ex/code

+

[293 257 161 328]

+

[0 156.75 0 153.75]

+

[1 1 1280 778 1.25]

+

8

+

LIBRARY_TOOLBAR

+

6

+

CLUSTER_CHART

+

EML_CHART

+

2

+

1

+ +

jin_ex

+
+ + +

eML_blk_kernel()

+

[18 64.5 118 66]

+

12

+

SUBCHART

+

8

+

FUNC_STATE

+

CLUSTER_STATE

+ +

1

+

function output = jin_ex(x,y) +%%#eml +output=x^2-y^2; +if(y<0) + if(x<0) + output = x^2-y^2; + elseif(x==0) + output = x^2+y^2; + elseif(x>0) + output = x^2-y^2; + end +elseif(y==0) + if(x<0) + output = x+y; + elseif(x==0) + output = x^2-y^2; + elseif(x>0) + output = x+y; + end +elseif(y>0) + if(x<0) + output = x^2+y^2; + elseif(x==0) + output = x+y; + elseif(x>0) + output = x^2+y^2; + end +end +

+

Matrix(4,1) +[205.0, 227.0, 1080.0, 733.0]

+

1

+
+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

OUTPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

{eML_blk_kernel();}

+

[32.125 19.875 102.544 14.964]

+

12

+ +

[0 0 1 0 23.5747 14.625 0 0]

+
+ +

3

+

[1 0 -1 0 23.5747 42.5747 0 0]

+
+

[23.5747 24.9468]

+

[23.575 23.575 14.625 34.575]

+

8

+

SMART

+ +

BOTH_STICK

+
+

1

+
+ +

[23.5747 49.5747 7]

+

8

+

CONNECTIVE_JUNCTION

+
+
+
+ +__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml + + + +

80000046

+ + +

Default Simulink S-Function Target.

+
+ +
+
+ +

7

+

jin_ex/code

+

8

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml + + +

[395, 327, 933, 805]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

Simulink

+ +

[35, 38, 65, 52]

+

-1

+
+ +

[35, 38, 65, 52]

+

-2

+

2

+
+ +

[2, 1]

+

[250, 49, 320, 96]

+

-3

+

1.31

+

Stateflow.Translate.translate

+

ExplicitOnly

+

on

+

off

+

MATLAB Function

+ +
+ +

[35, 53, 65, 67]

+

-4

+
+ +

1

+

4#out:1

+

3#in:1

+
+ +

2

+

5#out:1

+

3#in:2

+
+ +

3

+

3#out:1

+

6#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml + + +

[219, 337, 814, 775]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

22

+

13

+

Simulink

+ +

[20, 101, 40, 119]

+

-1

+
+ +

[20, 136, 40, 154]

+

-2

+

2

+
+ +

[1, 1]

+

[270, 230, 320, 270]

+

2

+

1

+
+ +

Stateflow S-Function 2

+

[2, 2]

+

[180, 100, 230, 160]

+

1

+

sf_sfun

+

[2 2]

+

off

+

off

+

off

+ +

2

+

output

+
+
+ +

[460, 241, 480, 259]

+

3

+
+ +

[460, 101, 480, 119]

+

-6

+
+ +

6

+

3::1#out:1

+

[120, 0]

+

3::20#in:1

+
+ +

7

+

3::18#out:1

+

3::20#in:2

+
+ +

output

+

8

+

[0, 0]

+

3::20#out:2

+

3::19#in:1

+
+ +

9

+

3::21#out:1

+

3::22#in:1

+
+ +

10

+

3::20#out:1

+

3::21#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml + + +

[83, 25, 703, 528]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

on

+

off

+

Deduce

+

simulink-default.rpt

+

7

+

Simulink

+ +

[2, 1]

+

[80, 54, 245, 121]

+

-1

+

1.12

+

on

+

+

TTdiag Copy

+

TTdiag Delete

+

TTdiag Open Simulink

+

off

+ + port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center') + Table Block + + +
+ +

Table1 from Jin and Parnas' paper "Defining the meaning +of tabular mathematical expressions" + +2 Dimensional normal function table of 2 variables + +provable in PVS and CVC3

+

[286, 62, 540, 124]

+

[0, 0, 0, 0]

+

-1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml + + + + +

1

+

[83.0, 25.0, 620.0, 503.0]

+ +

0

+

Left

+

50

+

50

+

9

+

Unset

+
+ +

1

+
+ +

1

+

1

+

SimulinkTopLevel

+

0

+

[582.0, 268.0]

+

1.0

+

[16.44140625, -6.5]

+

[16.44140625, -6.5, 582.0, 268.0]

+
+ + +

Simulink:Editor:ReferencedFiles

+

Referenced Files

+

0

+

+

{"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"} +

+

0

+

Left

+

640

+

480

+

Unset

+
+ +

GLUE2:PropertyInspector

+

Property Inspector

+

0

+

+

+

0

+

Right

+

640

+

480

+

Unset

+
+
+

AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAmwAAAFJAAAAAQAAAAIAAAABAAAAAvwAAAAA

+ +

3da89d13-2396-40e1-aa42-dc9d317f4095

+
+

02212184-e766-4db1-9955-fe58654b0bc9

+
+
+ +__MWOPC_PACKAGE_END__ diff --git a/Examples/Jin_Parnas_Example.mdl.r2010a b/Examples/Jin_Parnas_Example.mdl.r2010a new file mode 100644 index 0000000..0b5a8b9 --- /dev/null +++ b/Examples/Jin_Parnas_Example.mdl.r2010a @@ -0,0 +1,1243 @@ +Model { + Name "Jin_Parnas_Example" + Version 7.5 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.2" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "ISO-8859-1" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + MaxMDLFileLineLength 120 + Created "Mon Jan 24 12:34:29 2011" + Creator "colin" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "matthew" + ModifiedDateFormat "%" + LastModifiedDate "Thu May 15 15:26:50 2014" + RTWModifiedTimeStamp 322068405 + ModelVersionFormat "1.%" + ConfigurationManager "none" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 6 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 19 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "SFDataObjDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "SupportNonFinite" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "PortableWordSizes" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] " + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 1 + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Outport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType "S-Function" + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + Block { + BlockType Terminator + } + } + System { + Name "Jin_Parnas_Example" + Location [1009, 551, 1589, 811] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 6 + Block { + BlockType SubSystem + Name "jin_ex" + SID 1 + Ports [2, 1] + Position [80, 54, 245, 121] + LibraryVersion "1.12" + UserDataPersistent on + UserData "DataTag0" + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5," + " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center')\ncolor('green')\ntext(0.5, 0.1, 'Checked', 'horizon" + "talAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "jin_ex" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "x" + SID 4 + Position [35, 38, 65, 52] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "y" + SID 5 + Position [35, 38, 65, 52] + Port "2" + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType SubSystem + Name "code" + SID 3 + Ports [2, 1] + Position [250, 49, 320, 96] + LibraryVersion "1.31" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskDisplay "disp('jin_ex');" + MaskSelfModifiable on + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "autoscale" + System { + Name "code" + Location [257, 457, 812, 717] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark 19 + SIDPrevWatermark 13 + Block { + BlockType Inport + Name "x" + SID 1 + Position [20, 101, 40, 119] + IconDisplay "Port number" + OutDataType "sfix(16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "y" + SID 18 + Position [20, 136, 40, 154] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID 15 + Ports [1, 1] + Position [270, 160, 320, 200] + Outputs "1" + } + Block { + BlockType "S-Function" + Name " SFunction " + SID 14 + Tag "Stateflow S-Function Jin_Parnas_Example 2" + Ports [2, 2] + Position [180, 100, 230, 160] + FunctionName "sf_sfun" + PortCounts "[2 2]" + EnableBusSupport off + Port { + PortNumber 2 + Name "output" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID 17 + Position [460, 171, 480, 189] + } + Block { + BlockType Outport + Name "output" + SID 19 + Position [460, 101, 480, 119] + IconDisplay "Port number" + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + Line { + SrcBlock "x" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "y" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "output" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "output" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "output" + SID 6 + Position [35, 53, 65, 67] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Line { + SrcBlock "x" + SrcPort 1 + DstBlock "code" + DstPort 1 + } + Line { + SrcBlock "y" + SrcPort 1 + DstBlock "code" + DstPort 2 + } + Line { + SrcBlock "code" + SrcPort 1 + DstBlock "output" + DstPort 1 + } + } + } + Annotation { + Name "Table1 from Jin and Parnas' paper \"Defining the meaning\nof tabular mathematical expressions\"\n\n" + "2 Dimensional normal function table of 2 variables\n\nprovable in PVS and CVC3" + Position [413, 93] + } + } +} +MatData { + NumRecords 1 + DataRecord { + Tag DataTag0 + Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #@,@ !@ @ ) 4" + " ( 0 + R ! ( \"P,@ %)30 . $#( 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . R#$ 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E<" + "E]? #@ (@Q & \" $ !0 @ !9 0 $ #@ (@) & \" D !0 @ " + " !8\"0 0 $ @ %@) \" + -@! X @ . ( !@$ \"X\" 6 D 1W)I9# 0V5L;', 0V5L;#$" + " 8V]N9%]T97AT &-E;&Q?:6YD97@ <&%R96YT7V=R:60 8V5L;', 1W)I9 !P87)E;G1?8V5L; !S<&QI=%]P8@!N=6U?8V5L;', 9W)I9%]I;F1E>" + " !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F 0 # 0 \"H A 0 \"L B 0 \"P 7 0 \"T " + " ! , ! +@ \"$ ! +P \"( ! , !< ! ,0 $ P $ R (0 $ S " + " (@ $ T %P $ U 0 # 0 #8 A 0 #< B 0 #@ 7 0 #D !" + " , ! .@ \"$ ! .P \"( ! / !< ! /0 $ P $ ^ (0 $ _ (" + "@ $ ! %P $ !! 0 # 0 $( A 0 $, B 0 $0 7 0 $4 ! " + " , ! 1@ \"$ ! 1P \"( ! 2 !< ! 20 " + " " + " #@ . , 8 ( ! % \" " + "$ # 0 0 , >#PP X X !@ @ & 4 ( 0 $ ! D ( " + "\\#\\. , 8 ( ! % \" $ $ 0 0 0 >#T], X X !@ @ & 4" + " ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 ! 0 " + " & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ ! D " + " ( \\#\\. , 8 ( ! % \" $ # 0 0 , >#XP X X !@ @ " + " & 4 ( 0 $ ! D ( \"$ . 2 8 ( #0 % \" 8 " + " ! 0 & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ " + " ! D ( \\#\\. 4 8 ( #0 % \" @ ! 0 & ( " + " -T\" 0 , $ !@ < \" #@ #@ & \" 8 !0 @ ! 0 $ \"0 " + "@ (0 X X !@ @ & 4 ( 0 $ ! D ( \\#\\. 2 " + "8 ( #0 % \" 8 ! 0 & & -T\" 0 $ \" P X !( !@ " + " @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! #@ #@ & \" " + "8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $" + " ! 8 8 W0( ! 0 0 \" #@ # & \" 0 !0 @ ! P $" + " $ # 'D\\, . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #" + " & \" 0 !0 @ ! ! $ $ $ 'D]/3 . . 8 ( !@ % \" " + "$ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 $ !@ !" + "@ #= @ $ ! \"0 $ . . 8 ( !@ % \" $ ! 0 ) \" " + " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ " + " @ & 4 ( 0 $ ! D ( \\#\\. , 8 ( ! % \" " + " $ # 0 0 , >3XP X X !@ @ & 4 ( 0 $ ! D ( " + " \"$ . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ) 0 " + " X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ " + " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 " + " $ \"0 @ #P/PX !0 !@ @ - 4 ( \" $ ! 8 @ " + "W0( ! P @ * \"P ( . . 8 ( !@ % \" $ ! 0 ) \" " + " A #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ 0 X !( !@ " + " @ - 4 ( !@ $ ! 8 8 W0( ! 0 ( # #@ $@ & \" " + " T !0 @ & 0 $ !@ !@ #= @ $ ! \"0 $ . . 8 ( !@ " + " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 " + " $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! D ( " + " \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ( @ " + " X X !@ @ $ 4 ( 0 < ! ! ' >%XR+7E>,@ . 2 8 ( !@ " + " % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - " + " 4 ( !@ $ ! 8 8 W0( ! 0 0 \" #@ $@ & \" T !0 " + " @ & 0 $ !@ !@ #= @ $ ! \"@ ( . , 8 ( ! % \" " + " $ # 0 0 , >\"MY X !( !@ @ & 4 ( 0 , ! D 8 " + " \\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ " + " $ ! ! ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 " + " $ + @ X X !@ @ $ 4 ( 0 < ! ! ' >%XR*WE>,@ . 2 " + "8 ( !@ % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ " + " @ - 4 ( !@ $ ! 8 8 W0( ! 0 8 \" #@ $@ & \" " + " T !0 @ & 0 $ !@ !@ #= @ $ ! \" ( . . 8 ( ! " + " % \" $ ' 0 0 !P 'A>,BMY7C( #@ $@ & \" 8 !0 @ ! P " + "$ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 " + " & & -T\" 0 $ & @ X !( !@ @ - 4 ( !@ $ ! " + " 8 8 W0( ! 0 H \" #@ #@ & \" 0 !0 @ ! !P $ $ " + " < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 \\#\\ #P/" + "P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! !@ " + "( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ + @ " + "X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 !0 @" + " ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" " + " 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4 ( !@ " + "$ ! 8 8 W0( ! 0 @ \" #@ #@ & \" 0 !0 @ ! !P " + "$ $ < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 " + "\\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $" + " ! !P ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $" + " * @ X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 " + " !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4" + " ( !@ $ ! 8 8 W0( ! 0 L \" #@ #@ & \" 0 !0 @" + " ! !P $ $ < !X7C(K>5XR X !( !@ @ & 4 ( 0 , ! D " + " 8 \\#\\ #P/P / _#@ &@ & \" T !0 @ . 0 $ !@ #@ " + " #= @ $ ) P P - #@ \\ 0 $0 !( 3 ! X !( !@ @ - 4 " + " ( !@ $ ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ " + " & 0 $ !@ !@ #= @ $ ! \"0 $ . 2 8 ( #0 % \" 8 " + " ! 0 & & -T\" 0 $ \" P X !( !@ @ - 4 ( !@ $ " + " ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ & 0 $ " + " !@ !@ #= @ $ ! \"0 $ . . 8 ( ! % \" $ & 0 " + "0 !@ &II;E]E> #@ # & \" 0 !0 @ ! P $ $ # '@L>0 . F $ 8 (" + " @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> " + " &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H X P !@ @ & " + " 4 ( ! D #@ # & \" 8 !0 @ $ " + " \"0 . , 8 ( !@ % \" 0 ) X X !@ @ & " + " 4 ( 0 $ ! D ( . , 8 ( !@ % \" " + " 0 ) X X !@ @ & 4 ( 0 $ ! D ( . . " + " 8 ( !@ % \" $ ! 0 ) \" #@ # & \" 8 !" + "0 @ $ \"0 . . 8 ( !@ % \" $ ! 0 ) \"" + " #@ # & \" 8 !0 @ $ \"0 . . 8 ( !" + "@ % \" $ ! 0 ) \" &E #@ #@ & \" 8 !0 @ ! " + " 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 $ ! D ( " + " )$ . . 8 ( !@ % \" $ ! 0 ) \" \"1 #@ #@ & " + "\" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ @ & 4 ( " + " 0 $ ! D ( /D . ^ 8 ( @ % \" $ ! 0 % 0 !" + "@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @ $ \"" + "0 . , 8 ( !@ % \" 0 ) X P !@ @ & " + " 4 ( ! D #@ ) ! & \" ( !0 @ ! 0 $ !0 " + "$ P ! / $-E;&PQ $-E;&PR ')E0)\n output = x^2-y^2;\n end\nelseif(y==0)\n if(x<0)\n" + " output = x+y;\n elseif(x==0)\n output = x^2-y^2;\n elseif(x>0)\n output = x+y;\n end\nelseif(y>0)\n" + " if(x<0)\n output = x^2+y^2;\n elseif(x==0)\n output = x+y;\n elseif(x>0)\n output = x^2+y^2;\n end" + "\nend\n" + editorLayout "100 M4x1[205 227 1080 733]" + } + } + junction { + id 4 + position [23.5747 49.5747 7] + chart 2 + linkNode [2 0 0] + subviewer 2 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 5 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 4 + intersection [7 0 -1 -1 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 2 + linkNode [2 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 2 + drawStyle SMART + executionOrder 1 + ssIdNumber 2 + } + data { + id 6 + ssIdNumber 4 + name "x" + linkNode [2 0 7] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 7 + ssIdNumber 5 + name "y" + linkNode [2 6 8] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 8 + ssIdNumber 6 + name "output" + linkNode [2 7 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 9 + name "jin_ex/code" + machine 1 + chart 2 + } + target { + id 10 + name "sfun" + description "Default Simulink S-Function Target." + machine 1 + linkNode [1 0 0] + } +} diff --git a/Examples/PowerCond.mdl b/Examples/PowerCond.mdl new file mode 100644 index 0000000..161153b --- /dev/null +++ b/Examples/PowerCond.mdl @@ -0,0 +1,1336 @@ +Model { + Name "PowerCond" + Version 7.5 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.5" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "UTF-8" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + MaxMDLFileLineLength 120 + Created "Thu Aug 12 09:18:35 2010" + Creator "lawford" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "matthew" + ModifiedDateFormat "%" + LastModifiedDate "Thu May 15 15:27:04 2014" + RTWModifiedTimeStamp 322068420 + ModelVersionFormat "1.%" + ConfigurationManager "None" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 6 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 19 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "SFDataObjDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "SupportNonFinite" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "PortableWordSizes" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 197, 1080, 827 ] " + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 1 + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Outport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType "S-Function" + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + Block { + BlockType Terminator + } + Block { + BlockType UnitDelay + X0 "0" + SampleTime "1" + StateMustResolveToSignalObject off + RTWStateStorageClass "Auto" + } + } + System { + Name "PowerCond" + Location [842, 554, 1422, 814] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 9 + Block { + BlockType UnitDelay + Name "Unit Delay" + SID 9 + Position [120, 148, 155, 182] + BlockMirror on + SampleTime "-1" + } + Block { + BlockType SubSystem + Name "f_PowerCond" + SID 1 + Ports [4, 1] + Position [55, 43, 220, 112] + LibraryVersion "1.11" + UserDataPersistent on + UserData "DataTag0" + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'Power');port_label('input',2,'Kin');port_label('input',3,'Kout');port_l" + "abel('input',4,'Prev');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment" + "', 'center')\ncolor('green')\ntext(0.5, 0.1, 'Checked', 'horizontalAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "f_PowerCond" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "Power" + SID 4 + Position [35, 38, 65, 52] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "Kin" + SID 5 + Position [35, 38, 65, 52] + Port "2" + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "Kout" + SID 6 + Position [35, 38, 65, 52] + Port "3" + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "Prev" + SID 7 + Position [35, 38, 65, 52] + Port "4" + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType SubSystem + Name "code" + SID 3 + Ports [4, 1] + Position [250, 51, 320, 99] + LibraryVersion "1.31" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskDisplay "disp('f_PowerCond');" + MaskSelfModifiable on + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "autoscale" + System { + Name "code" + Location [257, 457, 812, 717] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark 20 + SIDPrevWatermark 13 + Block { + BlockType Inport + Name "Power" + SID 1 + Position [20, 101, 40, 119] + IconDisplay "Port number" + OutDataType "sfix(16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "Kin" + SID 18 + Position [20, 136, 40, 154] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Kout" + SID 19 + Position [20, 171, 40, 189] + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Prev" + SID 20 + Position [20, 206, 40, 224] + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID 15 + Ports [1, 1] + Position [270, 205, 320, 245] + Outputs "1" + } + Block { + BlockType "S-Function" + Name " SFunction " + SID 14 + Tag "Stateflow S-Function PowerCond 2" + Ports [4, 2] + Position [180, 102, 230, 203] + FunctionName "sf_sfun" + PortCounts "[4 2]" + EnableBusSupport off + Port { + PortNumber 2 + Name "output" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID 17 + Position [460, 216, 480, 234] + } + Block { + BlockType Outport + Name "output" + SID 5 + Position [460, 101, 480, 119] + IconDisplay "Port number" + OutDataType "sfix(16)" + OutScaling "2^0" + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + Line { + SrcBlock "Power" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "Kin" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "Kout" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + SrcBlock "Prev" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + Name "output" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "output" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "output" + SID 8 + Position [35, 53, 65, 67] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Line { + SrcBlock "Power" + SrcPort 1 + DstBlock "code" + DstPort 1 + } + Line { + SrcBlock "Kin" + SrcPort 1 + DstBlock "code" + DstPort 2 + } + Line { + SrcBlock "Kout" + SrcPort 1 + DstBlock "code" + DstPort 3 + } + Line { + SrcBlock "Prev" + SrcPort 1 + DstBlock "code" + DstPort 4 + } + Line { + SrcBlock "code" + SrcPort 1 + DstBlock "output" + DstPort 1 + } + } + } + Line { + SrcBlock "f_PowerCond" + SrcPort 1 + Points [10, 0; 0, 85] + DstBlock "Unit Delay" + DstPort 1 + } + Line { + SrcBlock "Unit Delay" + SrcPort 1 + Points [-85, 0; 0, -65] + DstBlock "f_PowerCond" + DstPort 4 + } + Annotation { + Name "This example is taken from the SDS1 SDD, uses predicate\nsubtyping to constrain Kout > Kin.\n\nTabl" + "e is 1 Dimensional Horizontal\n\nprovable in both PVS and CVC3" + Position [392, 85] + } + } +} +MatData { + NumRecords 1 + DataRecord { + Tag DataTag0 + Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X @)@ !@ @ ) 4" + " ( 0 / E ! ( #P)0 %)30 . 4\"4 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . \"\"4 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!" + "E " + "!R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F#Q+:6Y]+%!R978Z8F]O; " + ". F $ 8 ( @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H X P " + " !@ @ & 4 ( ! D #@ # & \" 8 !0 @ " + " $ \"0 . , 8 ( !@ % \" 0 ) X X " + " !@ @ & 4 ( 0 $ ! D ( . , 8 ( !@ % " + "\" 0 ) X X !@ @ & 4 ( 0 $ ! D ( " + " . . 8 ( !@ % \" $ ! 0 ) \" #@ # & \"" + " 8 !0 @ $ \"0 . . 8 ( !@ % \" $ ! " + "0 ) \" #@ # & \" 8 !0 @ $ \"0 . " + ". 8 ( !@ % \" $ ! 0 ) \" &E #@ #@ & \" 8 " + " !0 @ ! 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 $ ! " + " D ( )$ . . 8 ( !@ % \" $ ! 0 ) \" \"1" + " #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ @ & " + " 4 ( 0 $ ! D ( /D . ^ 8 ( @ % \" $ ! " + " 0 % 0 !@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @ " + " $ \"0 . , 8 ( !@ % \" 0 ) X P !" + "@ @ & 4 ( ! D #@ ) ! & \" ( !0 @ ! 0" + " $ !0 $ P ! / $-E;&PQ $-E;&PR ')E + + + + + + + + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /_rels/.rels + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml + + + model + 2010-12-22T18:30:47Z + lawford + pesaraamarasekera + 2022-05-11T19:33:18Z + 24.0 + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml + + + application/vnd.mathworks.simulink.model + Simulink Model + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml + + + 33faaa3e-bf28-490c-80cd-a61f9200ea98 + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml + + + + 9.11.0.1809720 + R2021b + Update 1 + Nov 02 2021 + 3710740051 + + +__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml + + + +

center

+

middle

+
+ + + + + + + + + +

4

+

bar

+

off

+
+ +

1

+

off

+

Port number

+

off

+

[]

+

[]

+

Inherit: auto

+

off

+

off

+

inherit

+

-1

+

Inherit

+

-1

+

auto

+

auto

+

off

+

off

+

on

+
+ +

1

+

off

+

Port number

+

off

+

[]

+

[]

+

Inherit: auto

+

off

+

off

+

inherit

+

-1

+

Inherit

+

-1

+

auto

+

auto

+

off

+

Dialog

+

held

+

[]

+

off

+

off

+

0

+

on

+
+ +

system

+

''

+

[]

+

auto

+
+ +

FromPortIcon

+

ReadWrite

+

All

+

off

+

off

+

Sample time

+

-1

+

Auto

+

Auto

+

Auto

+

void_void

+

off

+

off

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

off

+

UseLocalSettings

+

AllNumericTypes

+

UseLocalSettings

+

off

+

off

+

NONE

+

off

+

expression

+

update diagram

+

off

+

off

+

on

+

off

+

off

+

off

+

0

+

off

+

off

+
+ +
+
+ +__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64 +AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAABAAAAEQAAAA4AAADA/AIABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA +AJD8AgABAAAAAAAAAAIAAACQ/AIAAAFJTQAAAAAOAAAA8PsCAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAqPsCAAYAAAAI +AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAGj7 +AgAGAAAACAAAAAEAAAAAAAAABQAAAAgAAADHAwAAAQAAAAEAAAAAAAAADgAAADiqAAAGAAAACAAA +AAkAAAAAAAAABQAAAAgAAAAIqgAAAQAAAAEAAAAAAAAAAgAAAAiqAAADAAAA7wAAADANAACgDgAA +6BEAAGAnAADgogAACKoAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZABIb3Jpem9udGFs +QWxpZ25tZW50TW9kZQBtYW51YWwATWF4TW9kZQBNYXhfSQBNaW5Nb2RlAFN0cmluZ01vZGUAU3Ry +aW5nX0kAU3R5bGVNb2RlAFN0eWxlX0kAZWRpdABQb3NpdGlvbk1vZGUAUG9zaXRpb25fSQBCYWNr +Z3JvdW5kQ29sb3JNb2RlAEJhY2tncm91bmRDb2xvcl9JAENoaWxkcmVuAGhhbmRsZQBtYXRsYWIu +dWkuY29udHJvbC5DbGllbnRDb21wb25lbnQuU3RvcmFnZVVuaXRQb3MAVW5pdHNNb2RlAFVuaXRz +X0kAcGl4ZWxzAFJlZkZyYW1lTW9kZQBSZWZGcmFtZV9JAFNjcmVlblJlc29sdXRpb25Nb2RlAFNj +cmVlblJlc29sdXRpb25fSQBDaGFyYWN0ZXJXaWR0aE1vZGUAQ2hhcmFjdGVyV2lkdGhfSQBDaGFy +YWN0ZXJIZWlnaHRNb2RlAENoYXJhY3RlckhlaWdodF9JAFVuaXRzQ2FjaGUAUmVmRnJhbWVJbml0 +aWFsaXplZABvbgBDaGFyV2lkdGhJbml0aWFsaXplZABDaGFySGVpZ2h0SW5pdGlhbGl6ZWQARFBJ +SW5pdGlhbGl6ZWQAUG9zaXRpb25DYWNoZQBVbml0UG9zAG1hdGxhYi51aS5pbnRlcm5hbABWaXNp +YmxlTW9kZQBJbnRlcm5hbABTZXJpYWxpemFibGVBcHBsaWNhdGlvbkRhdGEAQ29weWFibGUAbWF0 +bGFiLmdyYXBoaWNzLmludGVybmFsLkdyYXBoaWNzQ29yZVByb3BlcnRpZXMuU2VyaWFsaXphYmxl +VUlDb250ZXh0TWVudQBHcmFwaGljc1BsYWNlaG9sZGVyAG1hdGxhYi5ncmFwaGljcwBtYXRsYWIu +Z3JhcGhpY3MuaW50ZXJuYWwuR3JhcGhpY3NDb3JlUHJvcGVydGllcy5Ub3BMZXZlbFNlcmlhbGl6 +ZWRPYmplY3QAb2ZmAEJlaW5nRGVsZXRlZABLZXlQcmVzc0Zjbk1vZGUAS2V5UHJlc3NGY25fSVMA +YW55AGZ1bmN0aW9uX2hhbmRsZV93b3Jrc3BhY2UAR3JpZDIAY2VsbHMAR1VJAEdyaWQxAG1haW5f +ZmlnAGZyYW1lAGZpZwBzY3JvbGxfdgBlZGl0X3RvZwBzYXZlX3BiAHB2c19wYgBjbG9zZV9wYgBz +YXZlX2V4dF9wYgBjaGVja19wYgBpbnB1dF9wYgBzZXR0aW5nc19wYgBmdW5jdGlvbl9uYW1lX2Nv +bnRyb2wAZnVuY3Rpb25fbmFtZV90ZXh0AGZ1bmN0aW9uX2lucHV0c190ZXh0AGZ1bmN0aW9uX2lu +cHV0c19jb250cm9sAGluaXRpYWxpemVkAGJsb2NrX2hhbmRsZQBzZXR0aW5ncwBoZWFkZXJfaGVp +Z2h0AGZpZ19oZWlnaHQAZmlnX3dpZHRoAHBiX29mZnNldABwYl93aWR0aABwYl9oZWlnaHQAaHR4 +X2hlaWdodAB0ZXh0X3dpZHRoAG5hbWVfbGFiZWwAaW5wdXRfbGFiZWwARGF0YQBQVlMAQ1ZDAHB2 +c19jaGVja2VkAG1vZGUARU1MR2VuAFRhYmxlQmxrAHNhdmVkAHZhbGlkYXRpb25fcmVwb3J0X2hh +bmRsZQBtdWx0aV90eXBlAG11bHRpX21vZGUAbXVsdGlfZ3JwAG11bHRpX29wdF9yZWcAbXVsdGlf +b3B0X291dABwcm92ZXJfb3B0X3B2cwBwcm92ZXJfb3B0X2N2YwB2ZXJzaW9uAHVuZG9fbWFuAHVu +ZG9fb3B0AHJlZG9fb3B0AGRlZmF1bHRfcHJvdmVyAFBWU19jb25zdABDVkNfY29uc3QARm9udFNp +emVNb2RlAEZvbnRXZWlnaHRNb2RlAEZvbnRXZWlnaHRfSQBib2xkAG1hdGxhYi51aS5pbnRlcm5h +bC5taXhpbi5Gb250UmVuZGVyYWJsZS5Gb250U3RvcmFnZQBwb2ludHMAbWF0bGFiLnVpLmludGVy +bmFsLlVuaXRQb3MuVW5pdHNDYWNoZQBtYXRsYWIudWkuaW50ZXJuYWwuVW5pdFBvcy5SZWZGcmFt +ZUluaXRpYWxpemVkAG1hdGxhYi51aS5pbnRlcm5hbC5Vbml0UG9zLkRQSUluaXRpYWxpemVkAG1h +dGxhYi51aS5pbnRlcm5hbC5Vbml0UG9zLlBvc2l0aW9uQ2FjaGUARm9udFN0b3JhZ2UAbWF0bGFi +LnVpLmludGVybmFsLm1peGluLk5vTWFyZ2luc1VuaXRzT25seVBvc2l0aW9uYWJsZS5PdXRlclBv +c2l0aW9uU3RvcmFnZQBVSUNvbnRyb2wAbWF0bGFiLnVpLmNvbnRyb2wAY29uZF90ZXh0AGNlbGxf +aW5kZXgAcGFyZW50X2dyaWQAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2VsbHMAZ3Jp +ZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgB3aWR0aABoZWlnaHQAZ3Jp +ZF9wYgBIb3Jpem9udGFsQWxpZ25tZW50X0kAbGVmdABDYWxsYmFja01vZGUAQ2FsbGJhY2tfSVMA +Q2VsbABzdWJncmlkAHBiX2ZsYWcAY29sb3IAY29uZGl0aW9uX3RleHRfd2lkdGgAY29uZGl0aW9u +X3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAY29uZGl0aW9uX3RleHRfeQBjb25kaXRpb25f +dGV4dF9vZmZzZXQAZ3JpZF9wdXNoX3dpZHRoAFNlcmlhbGl6YWJsZVVzZXJEYXRhAFJHcmlkAEVu +YWJsZU1vZGUAU3RvcmFnZVBvc2l0aW9uAFN0b3JhZ2VPdXRlclBvc2l0aW9uAENsb3NlUmVxdWVz +dEZjbk1vZGUAQ2xvc2VSZXF1ZXN0RmNuX0lTAFNpemVDaGFuZ2VkRmNuTW9kZQBTaXplQ2hhbmdl +ZEZjbl9JUwBNZW51QmFyTW9kZQBNZW51QmFyX0kAbm9uZQBOYW1lTW9kZQBOYW1lX0kATnVtYmVy +VGl0bGVNb2RlAE51bWJlclRpdGxlX0kAUG9pbnRlclNoYXBlQ0RhdGFfSVMAUG9pbnRlclNoYXBl +SG90U3BvdF9JUwBtYXRsYWIudWkuY29udGFpbmVyLkNvbnRhaW5lci5TZXJpYWxpemFibGVDaGls +ZHJlbgBMYWJlbE1vZGUATGFiZWxfSQBNZW51AG1hdGxhYi51aS5jb250YWluZXIAU2VwYXJhdG9y +TW9kZQBTZXBhcmF0b3JfSQBDaGVja2VkTW9kZQBDaGVja2VkX0kAQWNjZWxlcmF0b3JNb2RlAEFj +Y2VsZXJhdG9yX0kARW5hYmxlX0kAcmlnaHQAdGV4dAB0b2dnbGVidXR0b24AVmFsdWVNb2RlAFZh +bHVlX0kAV2ViQ29tcG9uZW50AFJlc2l6ZU1vZGUAbWF0bGFiLnVpLmludGVybmFsLm1peGluLlBy +aW50YWJsZS5QYXBlclBvc2l0aW9uU3RvcmFnZQBpbmNoZXMAUGFwZXJQb3NpdGlvblN0b3JhZ2UA +bWF0bGFiLnVpLmludGVybmFsLm1peGluLlByaW50YWJsZS5QYXBlclR5cGVTdG9yYWdlAFBhcGVy +VHlwZVN0b3JhZ2UAU2NyZWVuUGl4ZWxzUGVySW5jaE1vZGUARmlndXJlAG1hdGxhYi51aQBjb3Vu +dGVyX3RyaWFscwBjb3VudGVyX3JhbmdlAGV4Y2VwdABUVFNldHRpbmdzAHB2c19pbmNsdWRlcwBv +cGVuAGJ1dHRvbl93aWR0aABidXR0b25faGVpZ2h0AGJ1dHRvbl9vZmZzZXQAdGl0bGVfaGVpZ2h0 +AGxhYmVsX2hlaWdodABsYWJlbF93aWR0aAB0ZXh0X29mZnNldABpbmNsdWRlX3RleHQAY291bnRf +dGV4dAByYW5nZV90ZXh0AGV4Y2VwdF9jaGVjawBmdW5jdGlvbl9uYW1lAGZ1bmN0aW9uX2lucHV0 +cwBjaGVja2VkAGRhdGEAUFZTX2NoZWNrZXIAZGVmYXVsdF90eXBlAHB2c192ZXJzaW9uAG91dHB1 +dF90eXBlAGlucHV0X3R5cGUAdHlwZV9tb2RlAENWQ19jaGVja2VyAGNvbW1hbmQARU1MR2VuZXJh +dG9yAGRhdGF0eXBlAG11bHRpX291dHB1dABjdXJyZW50X2RlcHRoAHVuZG9fbGV2ZWwAVW5kb01h +bmFnZXIAcXVldWUAbWF4X2RlcHRoAENlbGwyAHJlc3VsdAByZXN1bHRfdGV4dABSQ2VsbAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAApAAAAKAAAAAAAAAAAAAAAMAAAAC8AAAAAAAAA +AAAAAAAAAAA3AAAAAAAAAAAAAAAAAAAAOgAAAAAAAAAAAAAAKQAAAHoAAAAAAAAAAAAAAH0AAAB8 +AAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAACbAAAAAAAAAAAA +AACwAAAArwAAAAAAAAAAAAAAfQAAAL0AAAAAAAAAAAAAACkAAADBAAAAAAAAAAAAAAApAAAAwwAA +AAAAAAAAAAAAxgAAAMUAAAAAAAAAAAAAAAAAAADKAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAA +AAAAANwAAAAAAAAAAAAAAAAAAADiAAAAAAAAAAAAAAAAAAAA5AAAAAAAAAAAAAAAAAAAAOkAAAAA +AAAAAAAAAAAAAADvAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA2AAAAAQAAAIkDAAABAAAANgAAAAEA +AAAYAAAAAQAAADYAAAABAAAAKgAAAAEAAAA2AAAAAQAAAEwAAAABAAAANgAAAAEAAABeAAAAAQAA +ADYAAAABAAAAgAAAAAEAAAA2AAAAAQAAAJIAAAABAAAANgAAAAEAAACuAAAAAQAAADYAAAABAAAA +xAAAAAEAAAA2AAAAAQAAAOUAAAABAAAANgAAAAEAAAD6AAAAAQAAADYAAAABAAAAEAEAAAEAAAA2 +AAAAAQAAADABAAABAAAANgAAAAEAAAAyAQAAAQAAADYAAAABAAAAQwEAAAEAAAA2AAAAAQAAAFkB +AAABAAAANgAAAAEAAABvAQAAAQAAADYAAAABAAAAhQEAAAEAAAA2AAAAAQAAAJsBAAABAAAANgAA +AAEAAACxAQAAAQAAADYAAAABAAAAvAEAAAEAAAA2AAAAAQAAAMIBAAABAAAANgAAAAEAAADMAQAA +AQAAADYAAAABAAAA0gEAAAEAAAA2AAAAAQAAANgBAAABAAAANgAAAAEAAADeAQAAAQAAADYAAAAB +AAAA5AEAAAEAAAA2AAAAAQAAAO4BAAABAAAANgAAAAEAAAD0AQAAAQAAADYAAAABAAAA+wEAAAEA +AAA2AAAAAQAAAAECAAABAAAANgAAAAEAAAALAgAAAQAAADYAAAABAAAAFgIAAAEAAAA2AAAAAQAA +ABwCAAABAAAANgAAAAEAAAAmAgAAAQAAADYAAAABAAAAMQIAAAEAAAA2AAAAAQAAADgCAAABAAAA +NgAAAAEAAABDAgAAAQAAADYAAAABAAAASQIAAAEAAAA2AAAAAQAAAFACAAABAAAANgAAAAEAAABW +AgAAAQAAADYAAAABAAAAXQIAAAEAAAA2AAAAAQAAAHICAAABAAAANgAAAAEAAACaAgAAAQAAADYA +AAABAAAAuAIAAAEAAAA2AAAAAQAAAMwCAAABAAAANgAAAAEAAADgAgAAAQAAADYAAAABAAAA9QIA +AAEAAAA2AAAAAQAAAAkDAAABAAAANgAAAAEAAAAdAwAAAQAAADYAAAABAAAAMQMAAAEAAAA2AAAA +AQAAAEYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAQAAAOQAAAAK +AAAAAAAAAAAAAAAAAAAAAgAAAOMAAAAWAAAAAAAAAAAAAAAAAAAAAwAAAN0AAAAJAAAAAAAAAAAA +AAAAAAAABAAAANwAAAAHAAAAAAAAAAAAAAAAAAAABQAAANsAAAACAAAAAAAAAAAAAAAAAAAABgAA +AAEAAAAEAAAAAAAAAAAAAAABAAAAAAAAANgAAAAFAAAAAAAAAAAAAAAAAAAABwAAANcAAAAIAAAA +AAAAAAAAAAAAAAAACAAAAC0AAAAJAAAAAAAAAAAAAAAAAAAACQAAAAwAAAAHAAAAAAAAAAAAAAAA +AAAACgAAAAYAAAACAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAEAAAAAAAAAAAAAAACAAAAAAAAAAMA +AAAGAAAAAAAAAAAAAAAAAAAADAAAAAQAAAACAAAAAAAAAAAAAAAAAAAADQAAAAUAAAAHAAAAAAAA +AAAAAAAAAAAADgAAAAsAAAAEAAAAAAAAAAAAAAADAAAAAAAAAAcAAAACAAAAAAAAAAAAAAAAAAAA +DwAAAAgAAAAGAAAAAAAAAAAAAAAAAAAAEAAAAAkAAAACAAAAAAAAAAAAAAAAAAAAEQAAAAoAAAAJ +AAAAAAAAAAAAAAAAAAAAEgAAABcAAAAHAAAAAAAAAAAAAAAAAAAAEwAAABEAAAACAAAAAAAAAAAA +AAAAAAAAFAAAAA0AAAAEAAAAAAAAAAAAAAAEAAAAAAAAAA4AAAAGAAAAAAAAAAAAAAAAAAAAFQAA +AA8AAAACAAAAAAAAAAAAAAAAAAAAFgAAABAAAAAHAAAAAAAAAAAAAAAAAAAAFwAAABYAAAAEAAAA +AAAAAAAAAAAFAAAAAAAAABIAAAACAAAAAAAAAAAAAAAAAAAAGAAAABMAAAAGAAAAAAAAAAAAAAAA +AAAAGQAAABQAAAACAAAAAAAAAAAAAAAAAAAAGgAAABUAAAAJAAAAAAAAAAAAAAAAAAAAGwAAACIA +AAAHAAAAAAAAAAAAAAAAAAAAHAAAABwAAAACAAAAAAAAAAAAAAAAAAAAHQAAABgAAAAEAAAAAAAA +AAAAAAAGAAAAAAAAABkAAAAGAAAAAAAAAAAAAAAAAAAAHgAAABoAAAACAAAAAAAAAAAAAAAAAAAA +HwAAABsAAAAHAAAAAAAAAAAAAAAAAAAAIAAAACEAAAAEAAAAAAAAAAAAAAAHAAAAAAAAAB0AAAAC +AAAAAAAAAAAAAAAAAAAAIQAAAB4AAAAGAAAAAAAAAAAAAAAAAAAAIgAAAB8AAAACAAAAAAAAAAAA +AAAAAAAAIwAAACAAAAAHAAAAAAAAAAAAAAAAAAAAJAAAACcAAAAEAAAAAAAAAAAAAAAIAAAAAAAA +ACMAAAACAAAAAAAAAAAAAAAAAAAAJQAAACQAAAAGAAAAAAAAAAAAAAAAAAAAJgAAACUAAAACAAAA +AAAAAAAAAAAAAAAAJwAAACYAAAAHAAAAAAAAAAAAAAAAAAAAKAAAACwAAAAEAAAAAAAAAAAAAAAJ +AAAAAAAAACgAAAACAAAAAAAAAAAAAAAAAAAAKQAAACkAAAAGAAAAAAAAAAAAAAAAAAAAKgAAACoA +AAACAAAAAAAAAAAAAAAAAAAAKwAAACsAAAAIAAAAAAAAAAAAAAAAAAAALAAAAD4AAAAJAAAAAAAA +AAAAAAAAAAAALQAAADMAAAAHAAAAAAAAAAAAAAAAAAAALgAAADIAAAACAAAAAAAAAAAAAAAAAAAA +LwAAAC4AAAAEAAAAAAAAAAAAAAAKAAAAAAAAAC8AAAAGAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAC +AAAAAAAAAAAAAAAAAAAAMQAAADEAAAAHAAAAAAAAAAAAAAAAAAAAMgAAADgAAAAEAAAAAAAAAAAA +AAALAAAAAAAAADQAAAACAAAAAAAAAAAAAAAAAAAAMwAAADUAAAAGAAAAAAAAAAAAAAAAAAAANAAA +ADYAAAACAAAAAAAAAAAAAAAAAAAANQAAADcAAAAHAAAAAAAAAAAAAAAAAAAANgAAAD0AAAAEAAAA +AAAAAAAAAAAMAAAAAAAAADkAAAACAAAAAAAAAAAAAAAAAAAANwAAADoAAAAGAAAAAAAAAAAAAAAA +AAAAOAAAADsAAAACAAAAAAAAAAAAAAAAAAAAOQAAADwAAAAPAAAAAAAAAAAAAAAAAAAAOgAAANEA +AAACAAAAAAAAAAAAAAAAAAAAOwAAAD8AAAACAAAAAAAAAAAAAAAAAAAAPAAAAEAAAAAEAAAAAAAA +AAAAAAANAAAAAAAAAEEAAAAEAAAAAAAAAAAAAAAOAAAAAAAAAEIAAAAHAAAAAAAAAAAAAAAAAAAA +PQAAAEcAAAACAAAAAAAAAAAAAAAAAAAAPgAAAEMAAAAEAAAAAAAAAAAAAAAPAAAAAAAAAEQAAAAG +AAAAAAAAAAAAAAAAAAAAPwAAAEUAAAACAAAAAAAAAAAAAAAAAAAAQAAAAEYAAAAHAAAAAAAAAAAA +AAAAAAAAQQAAAEwAAAACAAAAAAAAAAAAAAAAAAAAQgAAAEgAAAAEAAAAAAAAAAAAAAAQAAAAAAAA +AEkAAAAGAAAAAAAAAAAAAAAAAAAAQwAAAEoAAAACAAAAAAAAAAAAAAAAAAAARAAAAEsAAAAHAAAA +AAAAAAAAAAAAAAAARQAAAFEAAAACAAAAAAAAAAAAAAAAAAAARgAAAE0AAAAEAAAAAAAAAAAAAAAR +AAAAAAAAAE4AAAAGAAAAAAAAAAAAAAAAAAAARwAAAE8AAAACAAAAAAAAAAAAAAAAAAAASAAAAFAA +AAAHAAAAAAAAAAAAAAAAAAAASQAAAFYAAAACAAAAAAAAAAAAAAAAAAAASgAAAFIAAAAEAAAAAAAA +AAAAAAASAAAAAAAAAFMAAAAGAAAAAAAAAAAAAAAAAAAASwAAAFQAAAACAAAAAAAAAAAAAAAAAAAA +TAAAAFUAAAAHAAAAAAAAAAAAAAAAAAAATQAAAFsAAAACAAAAAAAAAAAAAAAAAAAATgAAAFcAAAAE +AAAAAAAAAAAAAAATAAAAAAAAAFgAAAAGAAAAAAAAAAAAAAAAAAAATwAAAFkAAAACAAAAAAAAAAAA +AAAAAAAAUAAAAFoAAAAHAAAAAAAAAAAAAAAAAAAAUQAAAGAAAAACAAAAAAAAAAAAAAAAAAAAUgAA +AFwAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAF0AAAAGAAAAAAAAAAAAAAAAAAAAUwAAAF4AAAACAAAA +AAAAAAAAAAAAAAAAVAAAAF8AAAALAAAAAAAAAAAAAAAAAAAAVQAAAGUAAAALAAAAAAAAAAAAAAAA +AAAAVgAAAGIAAAAEAAAAAAAAAAAAAAAVAAAAAAAAAGEAAAALAAAAAAAAAAAAAAAAAAAAVwAAAGQA +AAAEAAAAAAAAAAAAAAAWAAAAAAAAAGMAAAALAAAAAAAAAAAAAAAAAAAAWAAAAHwAAAALAAAAAAAA +AAAAAAAAAAAAWQAAAGcAAAAEAAAAAAAAAAAAAAAXAAAAAAAAAGYAAAALAAAAAAAAAAAAAAAAAAAA +WgAAAGkAAAAEAAAAAAAAAAAAAAAYAAAAAAAAAGgAAAALAAAAAAAAAAAAAAAAAAAAWwAAAGsAAAAE +AAAAAAAAAAAAAAAZAAAAAAAAAGoAAAALAAAAAAAAAAAAAAAAAAAAXAAAAG0AAAAEAAAAAAAAAAAA +AAAaAAAAAAAAAGwAAAALAAAAAAAAAAAAAAAAAAAAXQAAAG8AAAAEAAAAAAAAAAAAAAAbAAAAAAAA +AG4AAAALAAAAAAAAAAAAAAAAAAAAXgAAAHAAAAALAAAAAAAAAAAAAAAAAAAAXwAAAHIAAAAEAAAA +AAAAAAAAAAAcAAAAAAAAAHEAAAALAAAAAAAAAAAAAAAAAAAAYAAAAHQAAAAEAAAAAAAAAAAAAAAd +AAAAAAAAAHMAAAALAAAAAAAAAAAAAAAAAAAAYQAAAHkAAAALAAAAAAAAAAAAAAAAAAAAYgAAAHYA +AAAEAAAAAAAAAAAAAAAeAAAAAAAAAHUAAAALAAAAAAAAAAAAAAAAAAAAYwAAAHgAAAAEAAAAAAAA +AAAAAAAfAAAAAAAAAHcAAAALAAAAAAAAAAAAAAAAAAAAZAAAAHsAAAAEAAAAAAAAAAAAAAAgAAAA +AAAAAHoAAAALAAAAAAAAAAAAAAAAAAAAZQAAAIkAAAALAAAAAAAAAAAAAAAAAAAAZgAAAIEAAAAL +AAAAAAAAAAAAAAAAAAAAZwAAAH4AAAAEAAAAAAAAAAAAAAAhAAAAAAAAAH0AAAALAAAAAAAAAAAA +AAAAAAAAaAAAAIAAAAAEAAAAAAAAAAAAAAAiAAAAAAAAAH8AAAALAAAAAAAAAAAAAAAAAAAAaQAA +AIMAAAAEAAAAAAAAAAAAAAAjAAAAAAAAAIIAAAALAAAAAAAAAAAAAAAAAAAAagAAAIQAAAALAAAA +AAAAAAAAAAAAAAAAawAAAIYAAAAEAAAAAAAAAAAAAAAkAAAAAAAAAIUAAAALAAAAAAAAAAAAAAAA +AAAAbAAAAIgAAAAEAAAAAAAAAAAAAAAlAAAAAAAAAIcAAAALAAAAAAAAAAAAAAAAAAAAbQAAAJQA +AAALAAAAAAAAAAAAAAAAAAAAbgAAAIsAAAAEAAAAAAAAAAAAAAAmAAAAAAAAAIoAAAALAAAAAAAA +AAAAAAAAAAAAbwAAAI0AAAAEAAAAAAAAAAAAAAAnAAAAAAAAAIwAAAALAAAAAAAAAAAAAAAAAAAA +cAAAAI8AAAAEAAAAAAAAAAAAAAAoAAAAAAAAAI4AAAALAAAAAAAAAAAAAAAAAAAAcQAAAJEAAAAE +AAAAAAAAAAAAAAApAAAAAAAAAJAAAAALAAAAAAAAAAAAAAAAAAAAcgAAAJMAAAAEAAAAAAAAAAAA +AAAqAAAAAAAAAJIAAAAHAAAAAAAAAAAAAAAAAAAAcwAAAJkAAAACAAAAAAAAAAAAAAAAAAAAdAAA +AJUAAAAEAAAAAAAAAAAAAAArAAAAAAAAAJYAAAAGAAAAAAAAAAAAAAAAAAAAdQAAAJcAAAACAAAA +AAAAAAAAAAAAAAAAdgAAAJgAAAAHAAAAAAAAAAAAAAAAAAAAdwAAAJ0AAAACAAAAAAAAAAAAAAAA +AAAAeAAAAJoAAAAGAAAAAAAAAAAAAAAAAAAAeQAAAJsAAAACAAAAAAAAAAAAAAAAAAAAegAAAJwA +AAAHAAAAAAAAAAAAAAAAAAAAewAAAKIAAAACAAAAAAAAAAAAAAAAAAAAfAAAAJ4AAAAEAAAAAAAA +AAAAAAAsAAAAAAAAAJ8AAAAGAAAAAAAAAAAAAAAAAAAAfQAAAKAAAAACAAAAAAAAAAAAAAAAAAAA +fgAAAKEAAAAHAAAAAAAAAAAAAAAAAAAAfwAAAKYAAAACAAAAAAAAAAAAAAAAAAAAgAAAAKMAAAAG +AAAAAAAAAAAAAAAAAAAAgQAAAKQAAAACAAAAAAAAAAAAAAAAAAAAggAAAKUAAAAHAAAAAAAAAAAA +AAAAAAAAgwAAAKsAAAAEAAAAAAAAAAAAAAAtAAAAAAAAAKcAAAACAAAAAAAAAAAAAAAAAAAAhAAA +AKgAAAAGAAAAAAAAAAAAAAAAAAAAhQAAAKkAAAACAAAAAAAAAAAAAAAAAAAAhgAAAKoAAAAHAAAA +AAAAAAAAAAAAAAAAhwAAALAAAAAEAAAAAAAAAAAAAAAuAAAAAAAAAKwAAAACAAAAAAAAAAAAAAAA +AAAAiAAAAK0AAAAGAAAAAAAAAAAAAAAAAAAAiQAAAK4AAAACAAAAAAAAAAAAAAAAAAAAigAAAK8A +AAAHAAAAAAAAAAAAAAAAAAAAiwAAALUAAAAEAAAAAAAAAAAAAAAvAAAAAAAAALEAAAACAAAAAAAA +AAAAAAAAAAAAjAAAALIAAAAGAAAAAAAAAAAAAAAAAAAAjQAAALMAAAACAAAAAAAAAAAAAAAAAAAA +jgAAALQAAAAHAAAAAAAAAAAAAAAAAAAAjwAAALoAAAAEAAAAAAAAAAAAAAAwAAAAAAAAALYAAAAC +AAAAAAAAAAAAAAAAAAAAkAAAALcAAAAGAAAAAAAAAAAAAAAAAAAAkQAAALgAAAACAAAAAAAAAAAA +AAAAAAAAkgAAALkAAAAHAAAAAAAAAAAAAAAAAAAAkwAAAL8AAAAEAAAAAAAAAAAAAAAxAAAAAAAA +ALsAAAACAAAAAAAAAAAAAAAAAAAAlAAAALwAAAAGAAAAAAAAAAAAAAAAAAAAlQAAAL0AAAACAAAA +AAAAAAAAAAAAAAAAlgAAAL4AAAAHAAAAAAAAAAAAAAAAAAAAlwAAAMQAAAAEAAAAAAAAAAAAAAAy +AAAAAAAAAMAAAAACAAAAAAAAAAAAAAAAAAAAmAAAAMEAAAAGAAAAAAAAAAAAAAAAAAAAmQAAAMIA +AAACAAAAAAAAAAAAAAAAAAAAmgAAAMMAAAAHAAAAAAAAAAAAAAAAAAAAmwAAAMkAAAAEAAAAAAAA +AAAAAAAzAAAAAAAAAMUAAAACAAAAAAAAAAAAAAAAAAAAnAAAAMYAAAAGAAAAAAAAAAAAAAAAAAAA +nQAAAMcAAAACAAAAAAAAAAAAAAAAAAAAngAAAMgAAAAHAAAAAAAAAAAAAAAAAAAAnwAAAM4AAAAE +AAAAAAAAAAAAAAA0AAAAAAAAAMoAAAACAAAAAAAAAAAAAAAAAAAAoAAAAMsAAAAGAAAAAAAAAAAA +AAAAAAAAoQAAAMwAAAACAAAAAAAAAAAAAAAAAAAAogAAAM0AAAANAAAAAAAAAAAAAAAAAAAAowAA +AM8AAAAOAAAAAAAAAAAAAAAAAAAApAAAANAAAAAQAAAAAAAAAAAAAAAAAAAApQAAANIAAAASAAAA +AAAAAAAAAAAAAAAApgAAANMAAAATAAAAAAAAAAAAAAAAAAAApwAAANQAAAAUAAAAAAAAAAAAAAAA +AAAAqAAAANUAAAAVAAAAAAAAAAAAAAAAAAAAqQAAANYAAAAGAAAAAAAAAAAAAAAAAAAAqgAAANkA +AAACAAAAAAAAAAAAAAAAAAAAqwAAANoAAAAWAAAAAAAAAAAAAAAAAAAArAAAAN4AAAAWAAAAAAAA +AAAAAAAAAAAArQAAAN8AAAAWAAAAAAAAAAAAAAAAAAAArgAAAOAAAAAWAAAAAAAAAAAAAAAAAAAA +rwAAAOEAAAAWAAAAAAAAAAAAAAAAAAAAsAAAAOIAAAAAAAAAAAAAAAoAAAABAAAAAQAAALkDAAA7 +AAAAAQAAALoDAAA4AAAAAQAAALsDAADYAAAAAQAAALwDAADZAAAAAQAAAL0DAABOAAAAAQAAAL4D +AADaAAAAAQAAAL8DAADMAAAAAQAAAMADAAA+AAAAAQAAAMEDAABjAAAAAQAAAMIDAAAAAAAAAwAA +AAIAAAABAAAAtgMAADsAAAABAAAAtwMAADgAAAABAAAAuAMAAAUAAAADAAAAAQAAAJgDAADsAAAA +AQAAAJkDAADtAAAAAQAAAJoDAADuAAAAAQAAAJsDAACTAAAAAQAAAJwDAAAFAAAABAAAAAEAAACT +AwAAfgAAAAEAAACUAwAAfwAAAAEAAACVAwAAgAAAAAEAAACWAwAAkgAAAAEAAACXAwAAHQAAAAUA +AAAAAAAABgAAAAcAAAAAAAAABgAAAAgAAAABAAAAAAAAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAA +AAsAAAABAAAAAQAAAAwAAAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAA +AgAAABEAAAAAAAAABgAAABIAAAABAAAAAwAAABMAAAABAAAABAAAABUAAAABAAAACQAAACoAAAAA +AAAABgAAACsAAAACAAAAAAAAACwAAAABAAAACgAAAC0AAAACAAAAAQAAAC4AAAABAAAACwAAADEA +AAAAAAAAMgAAADMAAAAAAAAAMgAAADQAAAAAAAAABgAAADUAAAABAAAAigMAAHAAAAAAAAAABgAA +AHEAAAAAAAAABgAAAHIAAAAAAAAAcwAAAHQAAAABAAAAjQMAAHsAAAABAAAAkgMAABYAAAAAAAAA +BgAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAAUAAAAb +AAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAAYAAAAfAAAAAAAAAAYA +AAAgAAAAAQAAAAcAAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAA +ACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAAgAAAAAAAAAJQAAADgAAAABAAAA2AAAADsAAAABAAAA +JAEAAAEAAAABAAAAJQEAAD4AAAABAAAAXwMAAEAAAAABAAAAYAMAAEEAAAABAAAAYQMAAEIAAAAB +AAAAYgMAAEMAAAABAAAAYwMAAEQAAAABAAAAZAMAAEUAAAABAAAAZQMAAEYAAAABAAAAZgMAAEcA +AAABAAAAZwMAAEgAAAABAAAAaAMAAEkAAAABAAAAaQMAAEoAAAABAAAAagMAAEsAAAABAAAAawMA +AEwAAAABAAAAbAMAAE0AAAABAAAAbQMAAE4AAAABAAAAcQMAAFcAAAABAAAAcgMAAFgAAAABAAAA +cwMAAFkAAAABAAAAdAMAAFoAAAABAAAAdgMAAFsAAAABAAAAeAMAAFwAAAABAAAAeQMAAF0AAAAB +AAAAegMAAF4AAAABAAAAfAMAAGAAAAABAAAAfQMAAGMAAAABAAAAfgMAAGUAAAABAAAAfwMAAGYA +AAABAAAAgAMAAGcAAAABAAAAgQMAAGgAAAABAAAAggMAAGoAAAABAAAAhQMAAGsAAAABAAAAhgMA +AGwAAAABAAAAhwMAAG0AAAABAAAAiAMAAAYAAAA5AAAAAQAAAKgAAACEAAAAAQAAAKkAAACFAAAA +AQAAAKoAAACGAAAAAQAAAKsAAACHAAAAAQAAAMEAAACIAAAAAQAAANcAAAAAAAAACQAAAAQAAAAB +AAAAIgAAAH4AAAABAAAAIwAAAH8AAAABAAAAJAAAAIAAAAABAAAAJQAAAIkAAAABAAAAJgAAAIoA +AAABAAAAJwAAAIsAAAABAAAAPQAAAJIAAAABAAAAPgAAAJMAAAABAAAAPwAAAB0AAAAFAAAAAAAA +AAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAAwAAAAJAAAAAAAAAAYAAAAKAAAAAAAAAAYAAAALAAAA +AQAAAA0AAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAAAQAAAA4AAAAR +AAAAAAAAAAYAAAASAAAAAQAAAA8AAAATAAAAAQAAABAAAAAVAAAAAQAAABUAAAAqAAAAAAAAAAYA +AAArAAAAAgAAAAAAAAAsAAAAAQAAABYAAAAtAAAAAgAAAAEAAAAuAAAAAQAAABcAAAAxAAAAAAAA +ADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAABkAAABwAAAAAAAAAAYAAABxAAAA +AAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAABwAAAB7AAAAAQAAACEAAAAWAAAAAAAAAAYAAAAQ +AAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAARAAAAGwAAAAAA +AAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAASAAAAHwAAAAAAAAAGAAAAIAAA +AAEAAAATAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAA +JgAAAAAAAAAjAAAAJwAAAAEAAAAUAAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZ +AAAAAAAAAAYAAAAaAAAAAQAAABoAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUA +AAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAABsAAAAAAAAAEAAAABYAAAAAAAAABgAA +ABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAHQAAABsAAAAAAAAABgAAABwAAAACAAAA +kAAAAB0AAAAAAAAABgAAAB4AAAABAAAAHgAAAB8AAAAAAAAABgAAACAAAAABAAAAHwAAACEAAAAA +AAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcA +AAABAAAAIAAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjAAAAAAAAACNAAAACgAAAAAAAAAGAAAACwAA +AAEAAAAoAAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAAApAAAAjgAAAAAAAAAGAAAA +jwAAAAEAAAArAAAAEwAAAAEAAAAsAAAAFQAAAAEAAAAxAAAAKwAAAAIAAAAAAAAALAAAAAEAAAAy +AAAALQAAAAIAAAABAAAALgAAAAEAAAAzAAAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAAmgAAAAEA +AAA0AAAAdAAAAAEAAAA3AAAAewAAAAEAAAA8AAAAFgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAA +ABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAALQAAABsAAAAAAAAABgAAABwAAAACAAAA +kAAAAB0AAAAAAAAABgAAAB4AAAABAAAALgAAAB8AAAAAAAAABgAAACAAAAABAAAALwAAACEAAAAA +AAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcA +AAABAAAAMAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAA +AAEAAAA1AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAA +eAAAAAAAAAAjAAAAeQAAAAEAAAA2AAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZ +AAAAAAAAAAYAAAAaAAAAAQAAADgAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYA +AAAeAAAAAQAAADkAAAAfAAAAAAAAAAYAAAAgAAAAAQAAADoAAAAhAAAAAAAAABgAAAAiAAAAAAAA +ACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAADsAAAAAAAAA +CQAAAAQAAAABAAAAVgAAAH4AAAABAAAAVwAAAH8AAAABAAAAWAAAAIAAAAABAAAAWQAAAIkAAAAB +AAAAWgAAAIoAAAABAAAAWwAAAIsAAAABAAAAcQAAAJIAAAABAAAAcgAAAJMAAAABAAAAcwAAAB0A +AAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAEAAAAAJAAAAAAAAAAYAAAAKAAAAAAAA +AAYAAAALAAAAAQAAAEEAAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAA +AQAAAEIAAAARAAAAAAAAAAYAAAASAAAAAQAAAEMAAAATAAAAAQAAAEQAAAAVAAAAAQAAAEkAAAAq +AAAAAAAAAAYAAAArAAAAAgAAAAAAAAAsAAAAAQAAAEoAAAAtAAAAAgAAAAEAAAAuAAAAAQAAAEsA +AAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAAE0AAABwAAAAAAAA +AAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAFAAAAB7AAAAAQAAAFUAAAAWAAAA +AAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABF +AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAABGAAAAHwAAAAAA +AAAGAAAAIAAAAAEAAABHAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAA +AAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAABIAAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAA +AAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAE4AAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2 +AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAAE8AAAAAAAAAEAAAABYA +AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAUQAAABsAAAAAAAAABgAA +ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAUgAAAB8AAAAAAAAABgAAACAAAAABAAAA +UwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA +AAAAIwAAACcAAAABAAAAVAAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjAAAAAAAAACNAAAACgAAAAAA +AAAGAAAACwAAAAEAAABcAAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAABdAAAAjgAA +AAAAAAAGAAAAjwAAAAEAAABfAAAAEwAAAAEAAABgAAAAFQAAAAEAAABlAAAAKwAAAAIAAAAAAAAA +LAAAAAEAAABmAAAALQAAAAIAAAABAAAALgAAAAEAAABnAAAAMQAAAAAAAAAyAAAAMwAAAAAAAAAy +AAAAmgAAAAEAAABoAAAAdAAAAAEAAABrAAAAewAAAAEAAABwAAAAFgAAAAAAAAAGAAAAEAAAABYA +AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAYQAAABsAAAAAAAAABgAA +ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAYgAAAB8AAAAAAAAABgAAACAAAAABAAAA +YwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA +AAAAIwAAACcAAAABAAAAZAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAA +AAAGAAAAGgAAAAEAAABpAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAA +AAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAABqAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAA +AAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAGwAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAd +AAAAAAAAAAYAAAAeAAAAAQAAAG0AAAAfAAAAAAAAAAYAAAAgAAAAAQAAAG4AAAAhAAAAAAAAABgA +AAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAA +AG8AAAAAAAAACQAAAAQAAAABAAAAigAAAH4AAAABAAAAiwAAAH8AAAABAAAAjAAAAIAAAAABAAAA +jQAAAIkAAAABAAAAjgAAAIoAAAABAAAAjwAAAIsAAAABAAAApQAAAJIAAAABAAAApgAAAJMAAAAB +AAAApwAAAB0AAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAHQAAAAJAAAAAAAAAAYA +AAAKAAAAAAAAAAYAAAALAAAAAQAAAHUAAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAA +AAYAAAAQAAAAAQAAAHYAAAARAAAAAAAAAAYAAAASAAAAAQAAAHcAAAATAAAAAQAAAHgAAAAVAAAA +AQAAAH0AAAAqAAAAAAAAAAYAAAArAAAAAgAAAAAAAAAsAAAAAQAAAH4AAAAtAAAAAgAAAAEAAAAu +AAAAAQAAAH8AAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAAIEA +AABwAAAAAAAAAAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAIQAAAB7AAAAAQAA +AIkAAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAA +GgAAAAEAAAB5AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAB6 +AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAB7AAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAA +AAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAB8AAAAAAAAAAoAAAAWAAAAAAAA +AAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIIAAAAbAAAAAAAAAAYAAAAcAAAA +AgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAAIMAAAAA +AAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAhQAAABsA +AAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAhgAAAB8AAAAAAAAABgAA +ACAAAAABAAAAhwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAA +IwAAACYAAAAAAAAAIwAAACcAAAABAAAAiAAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjAAAAAAAAACN +AAAACgAAAAAAAAAGAAAACwAAAAEAAACQAAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEA +AACRAAAAjgAAAAAAAAAGAAAAjwAAAAEAAACTAAAAEwAAAAEAAACUAAAAFQAAAAEAAACZAAAAKwAA +AAIAAAAAAAAALAAAAAEAAACaAAAALQAAAAIAAAABAAAALgAAAAEAAACbAAAAMQAAAAAAAAAyAAAA +MwAAAAAAAAAyAAAAmgAAAAEAAACcAAAAdAAAAAEAAACfAAAAewAAAAEAAACkAAAAFgAAAAAAAAAG +AAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAlQAAABsA +AAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAlgAAAB8AAAAAAAAABgAA +ACAAAAABAAAAlwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAA +IwAAACYAAAAAAAAAIwAAACcAAAABAAAAmAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1 +AAAAGQAAAAAAAAAGAAAAGgAAAAEAAACdAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAA +AAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAACeAAAAAAAAABAAAAAWAAAAAAAA +AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAKAAAAAbAAAAAAAAAAYAAAAcAAAA +AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAKEAAAAfAAAAAAAAAAYAAAAgAAAAAQAAAKIAAAAh +AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA +AAAnAAAAAQAAAKMAAAAAAAAAFQAAAAUAAAAAAAAABgAAAIwAAAAAAAAAjQAAAAoAAAAAAAAABgAA +AAsAAAABAAAArAAAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAArQAAAI4AAAAAAAAA +BgAAAI8AAAABAAAArwAAABMAAAABAAAAsAAAABUAAAABAAAAtQAAACsAAAACAAAAAAAAACwAAAAB +AAAAtgAAAC0AAAACAAAAAQAAAC4AAAABAAAAtwAAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAJoA +AAABAAAAuAAAAHQAAAABAAAAuwAAAHsAAAABAAAAwAAAABYAAAAAAAAABgAAABAAAAAWAAAAAAAA +AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAALEAAAAbAAAAAAAAAAYAAAAcAAAA +AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAALIAAAAfAAAAAAAAAAYAAAAgAAAAAQAAALMAAAAh +AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA +AAAnAAAAAQAAALQAAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAA +ABoAAAABAAAAuQAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAA +IwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAugAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY +AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAC8AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA +AAAGAAAAHgAAAAEAAAC9AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAC+AAAAIQAAAAAAAAAYAAAAIgAA +AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAC/AAAA +AAAAABYAAAAFAAAAAAAAAAYAAACMAAAAAAAAAI0AAAAKAAAAAAAAAAYAAAALAAAAAQAAAMIAAAAM +AAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAAAMMAAACOAAAAAAAAAAYAAACPAAAAAQAAAMUA +AAATAAAAAQAAAMYAAAAVAAAAAQAAAMsAAACcAAAAAAAAAAYAAAArAAAAAgAAAAAAAAAsAAAAAQAA +AMwAAAAtAAAAAgAAAAEAAAAuAAAAAQAAAM0AAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAACaAAAA +AQAAAM4AAAB0AAAAAQAAANEAAAB7AAAAAQAAANYAAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYAAAAA +AAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAxwAAABsAAAAAAAAABgAAABwA +AAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAyAAAAB8AAAAAAAAABgAAACAAAAABAAAAyQAA +ACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAA +IwAAACcAAAABAAAAygAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAG +AAAAGgAAAAEAAADPAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAA +AAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAADQAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAA +ABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAANIAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAA +AAAAAAYAAAAeAAAAAQAAANMAAAAfAAAAAAAAAAYAAAAgAAAAAQAAANQAAAAhAAAAAAAAABgAAAAi +AAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAANUA +AAAAAAAABgAAADkAAAABAAAA9AAAAIQAAAABAAAA9QAAAIUAAAABAAAA9gAAAIYAAAABAAAA9wAA +AIcAAAABAAAADQEAAIgAAAABAAAAIwEAAAAAAAAFAAAABAAAAAEAAADvAAAAfgAAAAEAAADwAAAA +fwAAAAEAAADxAAAAgAAAAAEAAADyAAAAkgAAAAEAAADzAAAAHQAAAAUAAAAAAAAABgAAAAcAAAAA +AAAABgAAAAgAAAABAAAA2QAAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAA2gAAAAwA +AAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAA2wAAABEAAAAAAAAABgAA +ABIAAAABAAAA3AAAABMAAAABAAAA3QAAABUAAAABAAAA4gAAACoAAAAAAAAABgAAACsAAAACAAAA +AAAAACwAAAABAAAA4wAAAC0AAAACAAAAAQAAAC4AAAABAAAA5AAAADEAAAAAAAAAMgAAADMAAAAA +AAAAMgAAADQAAAAAAAAABgAAADUAAAABAAAA5gAAAHAAAAAAAAAABgAAAHEAAAAAAAAABgAAAHIA +AAAAAAAAcwAAAHQAAAABAAAA6QAAAHsAAAABAAAA7gAAABYAAAAAAAAABgAAABAAAAAWAAAAAAAA +AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAN4AAAAbAAAAAAAAAAYAAAAcAAAA +AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAN8AAAAfAAAAAAAAAAYAAAAgAAAAAQAAAOAAAAAh +AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA +AAAnAAAAAQAAAOEAAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAA +ABoAAAABAAAA5wAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAA +IwAAAHgAAAAAAAAAIwAAAHkAAAABAAAA6AAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY +AAAAGQAAAAAAAAAGAAAAGgAAAAEAAADqAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA +AAAGAAAAHgAAAAEAAADrAAAAHwAAAAAAAAAGAAAAIAAAAAEAAADsAAAAIQAAAAAAAAAYAAAAIgAA +AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAADtAAAA +AAAAABUAAAAFAAAAAAAAAAYAAACMAAAAAAAAAI0AAAAKAAAAAAAAAAYAAAALAAAAAQAAAPgAAAAM +AAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAAAPkAAACOAAAAAAAAAAYAAACPAAAAAQAAAPsA +AAATAAAAAQAAAPwAAAAVAAAAAQAAAAEBAAArAAAAAgAAAAAAAAAsAAAAAQAAAAIBAAAtAAAAAgAA +AAEAAAAuAAAAAQAAAAMBAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAACaAAAAAQAAAAQBAAB0AAAA +AQAAAAcBAAB7AAAAAQAAAAwBAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY +AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAD9AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA +AAAGAAAAHgAAAAEAAAD+AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAD/AAAAIQAAAAAAAAAYAAAAIgAA +AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAAAQAA +AAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAAUBAAAb +AAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMA +AAB5AAAAAQAAAAYBAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAA +ABoAAAABAAAACAEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAA +CQEAAB8AAAAAAAAABgAAACAAAAABAAAACgEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAA +AAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAACwEAAAAAAAAWAAAABQAAAAAA +AAAGAAAAjAAAAAAAAACNAAAACgAAAAAAAAAGAAAACwAAAAEAAAAOAQAADAAAAAAAAAAGAAAADwAA +AAAAAAAGAAAAEAAAAAEAAAAPAQAAjgAAAAAAAAAGAAAAjwAAAAEAAAARAQAAEwAAAAEAAAASAQAA +FQAAAAEAAAAXAQAAnAAAAAAAAAAGAAAAKwAAAAIAAAAAAAAALAAAAAEAAAAYAQAALQAAAAIAAAAB +AAAALgAAAAEAAAAZAQAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAAmgAAAAEAAAAaAQAAdAAAAAEA +AAAdAQAAewAAAAEAAAAiAQAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAA +ABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAABMBAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAA +AAAAAAYAAAAeAAAAAQAAABQBAAAfAAAAAAAAAAYAAAAgAAAAAQAAABUBAAAhAAAAAAAAABgAAAAi +AAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAABYB +AAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAAABoAAAABAAAAGwEA +ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAA +IwAAAHkAAAABAAAAHAEAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAG +AAAAGgAAAAEAAAAeAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEA +AAAfAQAAHwAAAAAAAAAGAAAAIAAAAAEAAAAgAQAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAA +AAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAhAQAAAAAAABsAAAAPAAAA +AAAAAAYAAAAWAAAAAAAAAAYAAACdAAAAAQAAACoBAACeAAAAAQAAAC8BAACfAAAAAAAAAAYAAACg +AAAAAQAAADEBAAChAAAAAAAAAAYAAACiAAAAAQAAADMBAACjAAAAAAAAAAYAAACkAAAAAAAAAKUA +AACmAAAAAAAAAAYAAACnAAAAAQAAADQBAACoAAAAAAAAAAYAAACpAAAAAAAAADIAAACqAAAAAQAA +ADUBAACrAAAAAQAAADYBAACsAAAAAQAAAFgDAAArAAAAAgAAAAAAAAAsAAAAAQAAAFkDAAAtAAAA +AgAAAAEAAAAuAAAAAQAAAFoDAAAxAAAAAAAAACMAAAAzAAAAAAAAADIAAAC+AAAAAAAAAAYAAAC/ +AAAAAQAAAFwDAADCAAAAAQAAAF4DAADEAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAA +AAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAAmAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAA +AAAAAAAGAAAAHgAAAAEAAAAnAQAAHwAAAAAAAAAGAAAAIAAAAAEAAAAoAQAAIQAAAAAAAAAYAAAA +IgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAp +AQAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAACsB +AAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAACwBAAAfAAAAAAAA +AAYAAAAgAAAAAQAAAC0BAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAA +AAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAC4BAAAAAAAAHAAAAAUAAAAAAAAABgAAAAcAAAAA +AAAABgAAAAgAAAABAAAANwEAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAAOAEAAAwA +AAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAAOQEAABEAAAAAAAAABgAA +ABIAAAABAAAAOgEAABMAAAABAAAAOwEAABUAAAABAAAAQAEAACsAAAACAAAAAAAAACwAAAABAAAA +QQEAAC0AAAACAAAAAQAAAC4AAAABAAAAQgEAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAADQAAAAA +AAAABgAAADUAAAABAAAARAEAAHAAAAAAAAAABgAAAHEAAAAAAAAABgAAAHIAAAAAAAAAcwAAAHQA +AAABAAAARwEAAHsAAAABAAAATAEAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAA +AAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAA8AQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAA +HQAAAAAAAAAGAAAAHgAAAAEAAAA9AQAAHwAAAAAAAAAGAAAAIAAAAAEAAAA+AQAAIQAAAAAAAAAY +AAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEA +AAA/AQAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAA +AEUBAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAA +AAAAACMAAAB5AAAAAQAAAEYBAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAA +AAAABgAAABoAAAABAAAASAEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4A +AAABAAAASQEAAB8AAAAAAAAABgAAACAAAAABAAAASgEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAA +ACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAASwEAAAAAAAAcAAAA +BQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAABNAQAACQAAAAAAAAAGAAAACgAAAAAAAAAG +AAAACwAAAAEAAABOAQAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAAAAEA +AABPAQAAEQAAAAAAAAAGAAAAEgAAAAEAAABQAQAAEwAAAAEAAABRAQAAFQAAAAEAAABWAQAAKwAA +AAIAAAAAAAAALAAAAAEAAABXAQAALQAAAAIAAAABAAAALgAAAAEAAABYAQAAMQAAAAAAAAAyAAAA +MwAAAAAAAAAyAAAANAAAAAAAAAAGAAAANQAAAAEAAABaAQAAcAAAAAAAAAAGAAAAcQAAAAAAAAAG +AAAAcgAAAAAAAABzAAAAdAAAAAEAAABdAQAAewAAAAEAAABiAQAAFgAAAAAAAAAGAAAAAAAAABAA +AAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAFIBAAAbAAAAAAAA +AAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAFMBAAAfAAAAAAAAAAYAAAAgAAAA +AQAAAFQBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAm +AAAAAAAAACMAAAAnAAAAAQAAAFUBAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkA +AAAAAAAABgAAABoAAAABAAAAWwEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAA +AHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAXAEAAAAAAAAQAAAAFgAAAAAAAAAGAAAA +FwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABeAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQ +AAAAHQAAAAAAAAAGAAAAHgAAAAEAAABfAQAAHwAAAAAAAAAGAAAAIAAAAAEAAABgAQAAIQAAAAAA +AAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAA +AAEAAABhAQAAAAAAABwAAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAGMBAAAJAAAA +AAAAAAYAAAAKAAAAAAAAAAYAAAALAAAAAQAAAGQBAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAP +AAAAAAAAAAYAAAAQAAAAAQAAAGUBAAARAAAAAAAAAAYAAAASAAAAAQAAAGYBAAATAAAAAQAAAGcB +AAAVAAAAAQAAAGwBAAArAAAAAgAAAAAAAAAsAAAAAQAAAG0BAAAtAAAAAgAAAAEAAAAuAAAAAQAA +AG4BAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAAHABAABwAAAA +AAAAAAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAHMBAAB7AAAAAQAAAHgBAAAW +AAAAAAAAAAYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoA +AAABAAAAaAEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAaQEA +AB8AAAAAAAAABgAAACAAAAABAAAAagEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAA +IwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAawEAAAAAAAAKAAAAFgAAAAAAAAAG +AAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEAAABxAQAAGwAAAAAAAAAGAAAAHAAAAAIA +AACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAByAQAAAAAA +ABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAHQBAAAbAAAA +AAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAHUBAAAfAAAAAAAAAAYAAAAg +AAAAAQAAAHYBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMA +AAAmAAAAAAAAACMAAAAnAAAAAQAAAHcBAAAAAAAAHAAAAAUAAAAAAAAABgAAAAcAAAAAAAAABgAA +AAgAAAABAAAAeQEAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAAegEAAAwAAAAAAAAA +BgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAAewEAABEAAAAAAAAABgAAABIAAAAB +AAAAfAEAABMAAAABAAAAfQEAABUAAAABAAAAggEAACsAAAACAAAAAAAAACwAAAABAAAAgwEAAC0A +AAACAAAAAQAAAC4AAAABAAAAhAEAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAADQAAAAAAAAABgAA +ADUAAAABAAAAhgEAAHAAAAAAAAAABgAAAHEAAAAAAAAABgAAAHIAAAAAAAAAcwAAAHQAAAABAAAA +iQEAAHsAAAABAAAAjgEAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY +AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAB+AQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA +AAAGAAAAHgAAAAEAAAB/AQAAHwAAAAAAAAAGAAAAIAAAAAEAAACAAQAAIQAAAAAAAAAYAAAAIgAA +AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACBAQAA +AAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIcBAAAb +AAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMA +AAB5AAAAAQAAAIgBAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAA +ABoAAAABAAAAigEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAA +iwEAAB8AAAAAAAAABgAAACAAAAABAAAAjAEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAA +AAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAjQEAAAAAAAAcAAAABQAAAAAA +AAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAACPAQAACQAAAAAAAAAGAAAACgAAAAAAAAAGAAAACwAA +AAEAAACQAQAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAAAAEAAACRAQAA +EQAAAAAAAAAGAAAAEgAAAAEAAACSAQAAEwAAAAEAAACTAQAAFQAAAAEAAACYAQAAKwAAAAIAAAAA +AAAALAAAAAEAAACZAQAALQAAAAIAAAABAAAALgAAAAEAAACaAQAAMQAAAAAAAAAyAAAAMwAAAAAA +AAAyAAAANAAAAAAAAAAGAAAANQAAAAEAAACcAQAAcAAAAAAAAAAGAAAAcQAAAAAAAAAGAAAAcgAA +AAAAAABzAAAAdAAAAAEAAACfAQAAewAAAAEAAACkAQAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAA +AAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAJQBAAAbAAAAAAAAAAYAAAAc +AAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAJUBAAAfAAAAAAAAAAYAAAAgAAAAAQAAAJYB +AAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAA +ACMAAAAnAAAAAQAAAJcBAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAA +BgAAABoAAAABAAAAnQEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAA +AAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAngEAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAA +AAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAACgAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAA +AAAAAAAGAAAAHgAAAAEAAAChAQAAHwAAAAAAAAAGAAAAIAAAAAEAAACiAQAAIQAAAAAAAAAYAAAA +IgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACj +AQAAAAAAABwAAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAKUBAAAJAAAAAAAAAAYA +AAAKAAAAAAAAAAYAAAALAAAAAQAAAKYBAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAA +AAYAAAAQAAAAAQAAAKcBAAARAAAAAAAAAAYAAAASAAAAAQAAAKgBAAATAAAAAQAAAKkBAAAVAAAA +AQAAAK4BAAArAAAAAgAAAAAAAAAsAAAAAQAAAK8BAAAtAAAAAgAAAAEAAAAuAAAAAQAAALABAAAx +AAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAALIBAABwAAAAAAAAAAYA +AABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAALUBAAB7AAAAAQAAALoBAAAWAAAAAAAA +AAYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA +qgEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAqwEAAB8AAAAA +AAAABgAAACAAAAABAAAArAEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUA +AAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAArQEAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAA +AAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEAAACzAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAA +dgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAC0AQAAAAAAABAAAAAW +AAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAALYBAAAbAAAAAAAAAAYA +AAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAALcBAAAfAAAAAAAAAAYAAAAgAAAAAQAA +ALgBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAA +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 +AgAAAAAAAAAsAAAAAQAAAP8BAAAtAAAAAgAAAAEAAAAuAAAAAQAAAAACAAAxAAAAAAAAADIAAAAz +AAAAAAAAADIAAAAAAAAADQAAAI4AAAAAAAAABgAAAI8AAAABAAAAAgIAALMAAAAAAAAABgAAALQA +AAAAAAAAIwAAAK0AAAAAAAAABgAAAK4AAAABAAAAAwIAAKwAAAABAAAABAIAACsAAAACAAAAAAAA +ACwAAAABAAAABQIAAC0AAAACAAAAAQAAAC4AAAABAAAABgIAADEAAAAAAAAAMgAAADMAAAAAAAAA +MgAAAA0AAAC1AAAAAAAAAAYAAAC2AAAAAQAAAAoCAACOAAAAAAAAAAYAAACPAAAAAQAAAAwCAACt +AAAAAAAAAAYAAACuAAAAAQAAAA0CAACsAAAAAQAAAA4CAAArAAAAAgAAAAAAAAAsAAAAAQAAAA8C +AAAtAAAAAgAAAAEAAAAuAAAAAQAAABACAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAAJAAAArQAA +AAAAAAAGAAAArgAAAAEAAAAUAgAArAAAAAEAAAA+AgAAKwAAAAIAAAAAAAAALAAAAAEAAAA/AgAA +LQAAAAIAAAABAAAALgAAAAEAAABAAgAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAACQAAAK0AAAAA +AAAABgAAAK4AAAABAAAAFQIAAKwAAAABAAAAIgIAACsAAAACAAAAAAAAACwAAAABAAAAIwIAAC0A +AAACAAAAAQAAAC4AAAABAAAAJAIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAAwAAACOAAAAAAAA +AAYAAACPAAAAAQAAABcCAACzAAAAAAAAAAYAAACtAAAAAAAAAAYAAACuAAAAAQAAABgCAACsAAAA +AQAAABkCAAArAAAAAgAAAAAAAAAsAAAAAQAAABoCAAAtAAAAAgAAAAEAAAAuAAAAAQAAABsCAAAx +AAAAAAAAADIAAAAzAAAAAAAAADIAAAAAAAAADQAAAI4AAAAAAAAABgAAAI8AAAABAAAAHQIAALMA +AAAAAAAABgAAALQAAAAAAAAAIwAAAK0AAAAAAAAABgAAAK4AAAABAAAAHgIAAKwAAAABAAAAHwIA +ACsAAAACAAAAAAAAACwAAAABAAAAIAIAAC0AAAACAAAAAQAAAC4AAAABAAAAIQIAADEAAAAAAAAA +MgAAADMAAAAAAAAAMgAAAA0AAAC1AAAAAAAAAAYAAAC2AAAAAQAAACUCAACOAAAAAAAAAAYAAACP +AAAAAQAAACcCAACtAAAAAAAAAAYAAACuAAAAAQAAACgCAACsAAAAAQAAACkCAAArAAAAAgAAAAAA +AAAsAAAAAQAAACoCAAAtAAAAAgAAAAEAAAAuAAAAAQAAACsCAAAxAAAAAAAAADIAAAAzAAAAAAAA +ADIAAAANAAAAsQAAAAAAAAAGAAAAsgAAAAAAAAAjAAAAswAAAAAAAAAGAAAAtAAAAAAAAAAjAAAA +rQAAAAAAAAAGAAAArgAAAAEAAAAsAgAArAAAAAEAAAAtAgAAKwAAAAIAAAAAAAAALAAAAAEAAAAu +AgAALQAAAAIAAAABAAAALgAAAAEAAAAvAgAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAADwAAAJwA +AAAAAAAABgAAALcAAAAAAAAAMgAAALUAAAAAAAAABgAAALYAAAABAAAAMAIAAI4AAAAAAAAABgAA +AI8AAAABAAAAMgIAAK0AAAAAAAAABgAAAK4AAAABAAAAMwIAAKwAAAABAAAANAIAACsAAAACAAAA +AAAAACwAAAABAAAANQIAAC0AAAACAAAAAQAAAC4AAAABAAAANgIAADEAAAAAAAAAMgAAADMAAAAA +AAAAMgAAAA8AAACcAAAAAAAAAAYAAAC3AAAAAAAAADIAAAC1AAAAAAAAAAYAAAC2AAAAAQAAADcC +AACOAAAAAAAAAAYAAACPAAAAAQAAADkCAACtAAAAAAAAAAYAAACuAAAAAQAAADoCAACsAAAAAQAA +ADsCAAArAAAAAgAAAAAAAAAsAAAAAQAAADwCAAAtAAAAAgAAAAEAAAAuAAAAAQAAAD0CAAAxAAAA +AAAAADIAAAAzAAAAAAAAADIAAAAJAAAArQAAAAAAAAAGAAAArgAAAAEAAABBAgAArAAAAAEAAABj +AgAAKwAAAAIAAAAAAAAALAAAAAEAAABkAgAALQAAAAIAAAABAAAALgAAAAEAAABlAgAAMQAAAAAA +AAAyAAAAMwAAAAAAAAAyAAAADwAAALEAAAAAAAAABgAAALIAAAAAAAAAIwAAALUAAAAAAAAABgAA +ALYAAAABAAAAQgIAAI4AAAAAAAAABgAAAI8AAAABAAAARAIAAK0AAAAAAAAABgAAAK4AAAABAAAA +RQIAAKwAAAABAAAARgIAACsAAAACAAAAAAAAACwAAAABAAAARwIAAC0AAAACAAAAAQAAAC4AAAAB +AAAASAIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAAsAAACOAAAAAAAAAAYAAACPAAAAAQAAAEoC +AACtAAAAAAAAAAYAAACuAAAAAQAAAEsCAACsAAAAAQAAAEwCAAArAAAAAgAAAAAAAAAsAAAAAQAA +AE0CAAAtAAAAAgAAAAEAAAAuAAAAAQAAAE4CAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAAPAAAA +sQAAAAAAAAAGAAAAsgAAAAAAAAAjAAAAtQAAAAAAAAAGAAAAtgAAAAEAAABPAgAAjgAAAAAAAAAG +AAAAjwAAAAEAAABRAgAArQAAAAAAAAAGAAAArgAAAAEAAABSAgAArAAAAAEAAABTAgAAKwAAAAIA +AAAAAAAALAAAAAEAAABUAgAALQAAAAIAAAABAAAALgAAAAEAAABVAgAAMQAAAAAAAAAyAAAAMwAA +AAAAAAAyAAAACwAAAI4AAAAAAAAABgAAAI8AAAABAAAAVwIAAK0AAAAAAAAABgAAAK4AAAABAAAA +WAIAAKwAAAABAAAAWQIAACsAAAACAAAAAAAAACwAAAABAAAAWgIAAC0AAAACAAAAAQAAAC4AAAAB +AAAAWwIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAA0AAAC1AAAAAAAAAAYAAAC2AAAAAQAAAFwC +AACOAAAAAAAAAAYAAACPAAAAAQAAAF4CAACtAAAAAAAAAAYAAACuAAAAAQAAAF8CAACsAAAAAQAA +AGACAAArAAAAAgAAAAAAAAAsAAAAAQAAAGECAAAtAAAAAgAAAAEAAAAuAAAAAQAAAGICAAAxAAAA +AAAAADIAAAAzAAAAAAAAADIAAAAbAAAABQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAABm +AgAACgAAAAAAAAAGAAAACwAAAAEAAABnAgAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAA +AAAGAAAAEAAAAAEAAABoAgAAEQAAAAAAAAAGAAAAEgAAAAEAAABpAgAAEwAAAAEAAABqAgAAFQAA +AAEAAABvAgAAKwAAAAIAAAAAAAAALAAAAAEAAABwAgAALQAAAAIAAAABAAAALgAAAAEAAABxAgAA +MQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAANAAAAAAAAAAGAAAANQAAAAEAAABzAgAAcAAAAAAAAAAG +AAAAcQAAAAAAAAAGAAAAcgAAAAAAAABzAAAAdAAAAAEAAAB2AgAAewAAAAEAAAB7AgAAFgAAAAAA +AAAGAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAawIA +ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAbAIAAB8AAAAAAAAA +BgAAACAAAAABAAAAbQIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAA +AAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAbgIAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAA +AAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAB0AgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAA +AAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAB1AgAAAAAAABAAAAAWAAAA +AAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAHcCAAAbAAAAAAAAAAYAAAAc +AAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAHgCAAAfAAAAAAAAAAYAAAAgAAAAAQAAAHkC +AAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAA +ACMAAAAnAAAAAQAAAHoCAAAAAAAAEwAAAAUAAAAAAAAABgAAAIwAAAAAAAAAuAAAAAoAAAAAAAAA +BgAAAAsAAAABAAAAfAIAAAwAAAAAAAAABgAAAA0AAAAAAAAAuQAAAA8AAAAAAAAABgAAABAAAAAB +AAAAfQIAABEAAAAAAAAABgAAABMAAAABAAAAfgIAABUAAAABAAAAgwIAACsAAAACAAAAAAAAACwA +AAABAAAAhAIAAC0AAAACAAAAAQAAAC4AAAABAAAAhQIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAA +AHQAAAABAAAAiAIAAHsAAAABAAAAjQIAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAA +AAAAAAYAAAAaAAAAAQAAAH8CAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAe +AAAAAQAAAIACAAAfAAAAAAAAAAYAAAAgAAAAAQAAAIECAAAhAAAAAAAAABgAAAAiAAAAAAAAACMA +AAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAIICAAAAAAAACgAA +ABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAAABoAAAABAAAAhgIAABsAAAAAAAAA +BgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAAB +AAAAhwIAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEA +AACJAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAACKAgAAHwAA +AAAAAAAGAAAAIAAAAAEAAACLAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAA +JQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACMAgAAAAAAABsAAAAFAAAAAAAAAAYAAAAH +AAAAAAAAAAYAAAAIAAAAAQAAAI4CAAAKAAAAAAAAAAYAAAALAAAAAQAAAI8CAAAMAAAAAAAAAAYA +AAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAAAQAAAJACAAARAAAAAAAAAAYAAAASAAAAAQAA +AJECAAATAAAAAQAAAJICAAAVAAAAAQAAAJcCAAArAAAAAgAAAAAAAAAsAAAAAQAAAJgCAAAtAAAA +AgAAAAEAAAAuAAAAAQAAAJkCAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1 +AAAAAQAAAJsCAABwAAAAAAAAAAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAJ4C +AAB7AAAAAQAAAKMCAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAA +AAAAAAAGAAAAGgAAAAEAAACTAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAA +HgAAAAEAAACUAgAAHwAAAAAAAAAGAAAAIAAAAAEAAACVAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAj +AAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACWAgAAAAAAAAoA +AAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAJwCAAAbAAAAAAAA +AAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAA +AQAAAJ0CAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAAB +AAAAnwIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAoAIAAB8A +AAAAAAAABgAAACAAAAABAAAAoQIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAA +ACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAogIAAAAAAAATAAAABQAAAAAAAAAGAAAA +jAAAAAAAAAC4AAAACgAAAAAAAAAGAAAACwAAAAEAAACkAgAADAAAAAAAAAAGAAAADQAAAAAAAAC5 +AAAADwAAAAAAAAAGAAAAEAAAAAEAAAClAgAAEQAAAAAAAAAGAAAAEwAAAAEAAACmAgAAFQAAAAEA +AACrAgAAKwAAAAIAAAAAAAAALAAAAAEAAACsAgAALQAAAAIAAAABAAAALgAAAAEAAACtAgAAMQAA +AAAAAAAyAAAAMwAAAAAAAAAyAAAAdAAAAAEAAACwAgAAewAAAAEAAAC1AgAAEAAAABYAAAAAAAAA +BgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAApwIAABsAAAAAAAAABgAAABwAAAAC +AAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAqAIAAB8AAAAAAAAABgAAACAAAAABAAAAqQIAACEA +AAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAA +ACcAAAABAAAAqgIAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAA +GgAAAAEAAACuAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAj +AAAAeAAAAAAAAAAjAAAAeQAAAAEAAACvAgAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgA +AAAZAAAAAAAAAAYAAAAaAAAAAQAAALECAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAA +AAYAAAAeAAAAAQAAALICAAAfAAAAAAAAAAYAAAAgAAAAAQAAALMCAAAhAAAAAAAAABgAAAAiAAAA +AAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAALQCAAAA +AAAAFAAAAAUAAAAAAAAABgAAAIwAAAAAAAAAjQAAAAoAAAAAAAAABgAAAAsAAAABAAAAtgIAAAwA +AAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAtwIAAI4AAAAAAAAABgAAAI8AAAABAAAAuQIA +ABMAAAABAAAAugIAABUAAAABAAAAvwIAACsAAAACAAAAAAAAACwAAAABAAAAwAIAAC0AAAACAAAA +AQAAAC4AAAABAAAAwQIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAHQAAAABAAAAxAIAAHsAAAAB +AAAAyQIAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAA +AAAGAAAAGgAAAAEAAAC7AgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAA +AAEAAAC8AgAAHwAAAAAAAAAGAAAAIAAAAAEAAAC9AgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAA +JAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAC+AgAAAAAAAAoAAAAW +AAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAMICAAAbAAAAAAAAAAYA +AAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAA +AMMCAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA +xQIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAxgIAAB8AAAAA +AAAABgAAACAAAAABAAAAxwIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUA +AAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAyAIAAAAAAAAUAAAABQAAAAAAAAAGAAAAjAAA +AAAAAACNAAAACgAAAAAAAAAGAAAACwAAAAEAAADKAgAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAA +EAAAAAEAAADLAgAAjgAAAAAAAAAGAAAAjwAAAAEAAADNAgAAEwAAAAEAAADOAgAAFQAAAAEAAADT +AgAAKwAAAAIAAAAAAAAALAAAAAEAAADUAgAALQAAAAIAAAABAAAALgAAAAEAAADVAgAAMQAAAAAA +AAAyAAAAMwAAAAAAAAAyAAAAdAAAAAEAAADYAgAAewAAAAEAAADdAgAAFgAAAAAAAAAGAAAAAAAA +ABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAM8CAAAbAAAA +AAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAANACAAAfAAAAAAAAAAYAAAAg +AAAAAQAAANECAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMA +AAAmAAAAAAAAACMAAAAnAAAAAQAAANICAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAA +ABkAAAAAAAAABgAAABoAAAABAAAA1gIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAA +dQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAA1wIAAAAAAAAQAAAAFgAAAAAAAAAG +AAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAADZAgAAGwAAAAAAAAAGAAAAHAAAAAIA +AACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAADaAgAAHwAAAAAAAAAGAAAAIAAAAAEAAADbAgAAIQAA +AAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAA +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 +FgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAa +AAAAAQAAAAwDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAA0D +AAAfAAAAAAAAAAYAAAAgAAAAAQAAAA4DAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAA +ACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAA8DAAAAAAAACgAAABYAAAAAAAAA +BgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAAABoAAAABAAAAEwMAABsAAAAAAAAABgAAABwAAAAC +AAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAFAMAAAAA +AAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAAWAwAAGwAA +AAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAAXAwAAHwAAAAAAAAAGAAAA +IAAAAAEAAAAYAwAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAj +AAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAZAwAAAAAAABQAAAAFAAAAAAAAAAYAAACMAAAAAAAAAI0A +AAAKAAAAAAAAAAYAAAALAAAAAQAAABsDAAAMAAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAA +ABwDAACOAAAAAAAAAAYAAACPAAAAAQAAAB4DAAATAAAAAQAAAB8DAAAVAAAAAQAAACQDAAArAAAA +AgAAAAAAAAAsAAAAAQAAACUDAAAtAAAAAgAAAAEAAAAuAAAAAQAAACYDAAAxAAAAAAAAADIAAAAz +AAAAAAAAADIAAAB0AAAAAQAAACkDAAB7AAAAAQAAAC4DAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYA +AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAIAMAABsAAAAAAAAABgAA +ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAIQMAAB8AAAAAAAAABgAAACAAAAABAAAA +IgMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA +AAAAIwAAACcAAAABAAAAIwMAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAA +AAAGAAAAGgAAAAEAAAAnAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAA +AAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAAoAwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAA +AAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAACoDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAd +AAAAAAAAAAYAAAAeAAAAAQAAACsDAAAfAAAAAAAAAAYAAAAgAAAAAQAAACwDAAAhAAAAAAAAABgA +AAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAA +AC0DAAAAAAAAFAAAAAUAAAAAAAAABgAAAIwAAAAAAAAAjQAAAAoAAAAAAAAABgAAAAsAAAABAAAA +LwMAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAMAMAAI4AAAAAAAAABgAAAI8AAAAB +AAAAMgMAABMAAAABAAAAMwMAABUAAAABAAAAOAMAACsAAAACAAAAAAAAACwAAAABAAAAOQMAAC0A +AAACAAAAAQAAAC4AAAABAAAAOgMAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAHQAAAABAAAAPQMA +AHsAAAABAAAAQgMAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAA +GQAAAAAAAAAGAAAAGgAAAAEAAAA0AwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAG +AAAAHgAAAAEAAAA1AwAAHwAAAAAAAAAGAAAAIAAAAAEAAAA2AwAAIQAAAAAAAAAYAAAAIgAAAAAA +AAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAA3AwAAAAAA +AAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAADsDAAAbAAAA +AAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5 +AAAAAQAAADwDAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoA +AAABAAAAPgMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAPwMA +AB8AAAAAAAAABgAAACAAAAABAAAAQAMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAA +IwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAQQMAAAAAAAAXAAAABQAAAAAAAAAG +AAAAjAAAAAAAAACNAAAACgAAAAAAAAAGAAAACwAAAAEAAABDAwAADAAAAAAAAAAGAAAADQAAAAAA +AAC6AAAAuwAAAAAAAAAGAAAAvAAAAAEAAABEAwAADwAAAAAAAAAGAAAAEAAAAAEAAABFAwAAjgAA +AAAAAAAGAAAAjwAAAAEAAABHAwAAEwAAAAEAAABIAwAAFQAAAAEAAABNAwAAKwAAAAIAAAAAAAAA +LAAAAAEAAABOAwAALQAAAAIAAAABAAAALgAAAAEAAABPAwAAMQAAAAAAAAAyAAAAMwAAAAAAAAAy +AAAAdAAAAAEAAABSAwAAewAAAAEAAABXAwAAFgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAAABcA +AAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAASQMAABsAAAAAAAAABgAAABwAAAACAAAAkAAA +AB0AAAAAAAAABgAAAB4AAAABAAAASgMAAB8AAAAAAAAABgAAACAAAAABAAAASwMAACEAAAAAAAAA +GAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAAB +AAAATAMAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEA +AABQAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAA +AAAAAAAjAAAAeQAAAAEAAABRAwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAA +AAAAAAYAAAAaAAAAAQAAAFMDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAe +AAAAAQAAAFQDAAAfAAAAAAAAAAYAAAAgAAAAAQAAAFUDAAAhAAAAAAAAABgAAAAiAAAAAAAAACMA +AAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAFYDAAAAAAAABgAA +ABcAAAAAAAAAwAAAABsAAAAAAAAABgAAABwAAAACAAAAAQAAAHYAAAAAAAAAwAAAAHgAAAAAAAAA +IwAAAHkAAAABAAAAWwMAAAAAAAAGAAAAFwAAAAAAAADAAAAAGwAAAAAAAAAGAAAAHAAAAAIAAAAB +AAAAdgAAAAAAAADAAAAAeAAAAAAAAAAjAAAAeQAAAAEAAABdAwAAAAAAAAMAAADHAAAAAQAAAG4D +AADIAAAAAQAAAG8DAADJAAAAAQAAAHADAAABAAAA2wAAAAEAAAB1AwAAAQAAANsAAAABAAAAdwMA +AAEAAADbAAAAAQAAAHsDAAACAAAA5wAAAAEAAACDAwAA6AAAAAEAAACEAwAAAAAAAAoAAAAWAAAA +AAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIsDAAAbAAAAAAAAAAYAAAAc +AAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAAIwD +AAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAjgMA +ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAjwMAAB8AAAAAAAAA +BgAAACAAAAABAAAAkAMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAA +AAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAkQMAAAAAAAAFAAAAAwAAAAEAAACdAwAA7AAAAAEA +AACeAwAA7QAAAAEAAACfAwAA7gAAAAEAAACgAwAAkwAAAAEAAAChAwAABQAAAAMAAAABAAAAogMA +AOwAAAABAAAAowMAAO0AAAABAAAApAMAAO4AAAABAAAApQMAAJMAAAABAAAApgMAAAUAAAADAAAA +AQAAAKcDAADsAAAAAQAAAKgDAADtAAAAAQAAAKkDAADuAAAAAQAAAKoDAACTAAAAAQAAAKsDAAAF +AAAAAwAAAAEAAACsAwAA7AAAAAEAAACtAwAA7QAAAAEAAACuAwAA7gAAAAEAAACvAwAAkwAAAAEA +AACwAwAABQAAAAMAAAABAAAAsQMAAOwAAAABAAAAsgMAAO0AAAABAAAAswMAAO4AAAABAAAAtAMA +AJMAAAABAAAAtQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADAAAAAGAAAACAAAAAQAAAAA +AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHg8PTEOAAAAUAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHBAAAAAAACgeUAAAAAAAABp +QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAA +CQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4A +AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA +AAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAKB5 +QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +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 +AQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAA +AAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3Bh +dGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAA +ADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAA +AAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJ +AAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUA +AAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGlj +YXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxh +ciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAANAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAA +AAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQ +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAOAAAABgAAAA4AAABQAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8A +AAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAKB0QAAAAAAA +AGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA +AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAsAAAAHAAAA +DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHk8MAAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQArAAAADgAAAFAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBqQAAAAAAAoHRA +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 +BgAAABgAAAAAAADdAgAAAAEAAAABAAAAEgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A +AAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAA +AAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA +GAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +TkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAEwAAAAYAAAAO +AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA +AAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAACg +dEAAAAAAAAA+QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAFAAAAAIAAAAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAQ +AAAABwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAA +AAAAAAAJAAAAGAAAAHL8JUR9ye4/tHFEdcii7j++yj5TdvfsPw4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAeT09MA4AAABQAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAOBw +QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAA +AQAAAAAAAAAJAAAAGAAAAHL8JUR9ye4/tHFEdcii7j++yj5TdvfsPw4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEA +AAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAA +ACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAk +QAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +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 +AQAAAAEAAAAZAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB +AAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg +AAAAAAAAAAAAJEAAAAAAAOBwQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAaAAAAAgAA +AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAABYAAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAAEAAEAHk9PTAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +APA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +ABAAAQArAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA +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 +BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAHQAAAAIAAAAO +AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEA +AAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAA +ABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQ +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRA +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAAHgAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA +AAAJAAAAIAAAAAAAAAAAQGpAAAAAAADgcEAAAAAAAAA+QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +HwAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG +AAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAbAAAABwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAHL8JUR9ye4/tHFEdcii7j++yj5T +dvfsPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAA +AAAQAAMAeT4wAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA +AAkAAAAgAAAAAAAAAAAAJEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAHL8JUR9ye4/tHFEdcii7j++ +yj5TdvfsPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYA +AAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAA +AMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA +AAEAAAAAAAAACQAAACAAAAAAAAAAAAAkQAAAAAAAQGpAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAACIAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAA +AAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAA +CAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQA +AAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAA +AAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQBAAABgAAAAgAAAAB +AAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOgDAAAGAAAACAAAAAIAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBh +cmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMv +TUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAQAAEAQAAAAA4AAACgAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAA +ZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAA +AGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUw +QChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABA +AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnlt +b3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAA +ABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3Vw +cG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNz +aW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAjAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA +AAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA +AAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAkAAAABgAAAA4AAABQAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAA +AAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAA +TkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAAAlAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACEAAAAHAAAADgAAADAAAAAG +AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHk+MAAOAAAAOAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAhADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAACQAAAAgAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQArAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBqQAAAAAAAQGpAAAAAAAAAPkAA +AAAAAABOQA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAIAAAAAkA +AAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAA +BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABt +YXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9o +YW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAA +AB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAA +AAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRo +aW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAACkAAAAB +AAAAAAAAABAAAAApAAAAc2YlMEAoc3JjLGV2ZW50KXBiX2NhbGwob2JqZWN0LHNyYyxldmVudCkA +AAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAA +AAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA +jQAAAAEAAAAAAAAAEAAAAI0AAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBs +aWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1 +bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQENlbGwvc2V0X3BiLm0AAAAOAAAASAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA +AQAAAAEAAAAnAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEA +AAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAA +AACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAABAakAAAAAAAAA+QAAAAAAAAE5A +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAAKAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C +AAAAAQAAAAEAAAAIAAAABQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA +AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAKQAAAAYAAAAOAAAAUAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAA +AADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAABAakAAAAAAAAA+ +QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAAKgAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAmAAAABwAAAA4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAA8D8OAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAA +GAAAAHL8JUR9ye4/tHFEdcii7j++yj5TdvfsPw4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAACAAAAAEAAAABAAAAAAAAAAYAAAAgAAAAAAAA3QIAAAABAAAAAwAAAAoAAAAVAAAAIAAAAAkA +AAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA +AAAAAAAAAAhADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +CQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB +AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAAKAAAADgAAADAAAAAGAAAACAAAAAQA +AAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAG5ldwAOAAAAUAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAAAACAZkAAAAAA +AABZQAAAAAAAAD5ADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAA +AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJ +AAAACAAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4A +AAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAA +ANgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAA +QAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0 +aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAA +AAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAA +AAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAAC +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAA +AAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAA +AHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA +LQAAAAEAAAAAAAAAEAAAAC0AAABzZiUwQChzcmMsZXZlbnQpcGJfbmV3X2NhbGwob2JqZWN0LHNy +YyxldmVudCkAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAA +AAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA +AAEAAACNAAAAAQAAAAAAAAAQAAAAjQAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5 +L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25z +L1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR3JpZC9zZXRfcGIubQAAAA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAACwAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAA +AAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAAB +AAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANBy +QAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAIBmQAAAAAAAAFlAAAAA +AAAAPkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA +GAAAAAAAAN0CAAAAAQAAAAEAAAAtAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAA +AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+QA4A +AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAuAAAABgAAAA4AAABQ +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA +8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAIBmQAAA +AAAAAFlAAAAAAAAAPkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAvAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACsAAAAH +AAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAAEAAAAAYA +AABkZWxldGUAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA +AAkAAAAgAAAAAAAAAACAW0AAAAAAAIBmQAAAAAAAAFlAAAAAAAAAPkAOAAAAEAEAAAYAAAAIAAAA +AQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4A +AACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAA +AAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA +AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAkAAAAIAAAADgAAAEgEAAAGAAAACAAAAAEAAAAA +AAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRv +cgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRM +QUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAABAAAQBAAAAADgAAAJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxl +AAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAwAAAAAQAAAAAAAAAQAAAAMAAAAHNmJTBAKHNy +YyxldmVudClwYl9kZWxldGVfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQ4AAABAAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4A +AADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJQAAAABAAAAAAAAABAAAACUAAAAL1Vz +ZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29y +a3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gv +VGFibGVUb29sL0BHcmlkL3NldF9kZWxldGVfcGIubQAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAxAAAABAAA +AA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAA +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAA +AADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA +AAAJAAAAIAAAAAAAAAAAgFtAAAAAAACAZkAAAAAAAABZQAAAAAAAAD5ADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +MgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF +AAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEA +AAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAA +BQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkAOAAAAUAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAAMwAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAA +AAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE +AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFtAAAAAAACAZkAAAAAAAABZQAAAAAAAAD5ADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA +AAEAAAABAAAANAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAwAAAABwAAAA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAkA +AAAIAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAAAAQA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA +AAAAABAAAwB4PjEADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA +AAAACQAAACAAAAAAAAAAAMB8QAAAAAAAoHlAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADw +PwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAA +BgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAA +AAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE +AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAwHxAAAAAAACgeUAAAAAAAABpQAAAAAAAAE5ADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA +AAEAAAABAAAAOAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAF +AAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYA +AAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAA +BAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH +AAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA +AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAA +AAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNl +cGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAA +AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9u +cy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAA +AABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAO +AAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNm +JTBAKHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAA +AEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9u +eW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAA +AAAAEAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBT +dXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJl +c3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAADkAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA +AAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA +AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADoAAAAGAAAADgAAAFAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJA +AAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAAoHlAAAAAAAAAaUAAAAAA +AABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAADsAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAANwAAAAcAAAAOAAAAMAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeD4xAA4AAAA4AAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAA1AAAACAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAQAAAAIAAAAEAAAANgAAAAkAAAAA +AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAACgAAAA4AAAAwAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBuZXcADgAAAFAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAKCEQAAAAAAA4HpAAAAA +AAAATkAAAAAAAAA0QA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAA +AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +NQAAAAgAAAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO +AAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4A +AADYAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAA +AEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5j +dGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAA +AAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAA +AAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAA +AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24A +AAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAA +AAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AC0AAAABAAAAAAAAABAAAAAtAAAAc2YlMEAoc3JjLGV2ZW50KXBiX25ld19jYWxsKG9iamVjdCxz +cmMsZXZlbnQpAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAA +AAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAAjQAAAAEAAAAAAAAAEAAAAI0AAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFy +eS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9u +cy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdyaWQvc2V0X3BiLm0AAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAA9AAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAA +AAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA +AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ +ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAoIRAAAAAAADgekAAAAAAAABOQAAA +AAAAADRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAAPgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAA +AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANEAO +AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAPwAAAAYAAAAOAAAA +UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA +APC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAoIRAAAAAAADgekAA +AAAAAABOQAAAAAAAADRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA8AAAA +BwAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAAABAAAAAG +AAAAZGVsZXRlAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA +AAAJAAAAIAAAAAAAAAAAoIRAAAAAAACgeUAAAAAAAABOQAAAAAAAADRADgAAABABAAAGAAAACAAA +AAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAO +AAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEA +AAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA1AAAACAAAAA4AAABIBAAABgAAAAgAAAABAAAA +AAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAACAAAAAIAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0 +b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFU +TEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmls +ZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAA +AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMAAAAAEAAAAAAAAAEAAAADAAAABzZiUwQChz +cmMsZXZlbnQpcGJfZGVsZXRlX2NhbGwob2JqZWN0LHNyYyxldmVudCkOAAAAQAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAO +AAAAyAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACUAAAAAQAAAAAAAAAQAAAAlAAAAC9V +c2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdv +cmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94 +L1RhYmxlVG9vbC9AR3JpZC9zZXRfZGVsZXRlX3BiLm0AAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQgAAAAQA +AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAA +AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAA +AAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA +AAAACQAAACAAAAAAAAAAAKCEQAAAAAAAoHlAAAAAAAAATkAAAAAAAAA0QA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AEMAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +BQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB +AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A +AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAA +AAUAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA +IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRADgAAAFAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA +AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEQAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAA +AAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAKCEQAAAAAAAoHlAAAAAAAAATkAAAAAAAAA0QA4AAABI +AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA +AAABAAAAAQAAAEUAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQQAAAAcAAAAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA1 +AAAACAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA +AAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAAKAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlkAAAAAA +ACCMQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA +AAEAAAAAAAAACQAAACAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAiUAAAAAAAMCCQA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAEcAAAACAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA +AAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlkAAAAAAACCMQA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA +AAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAiUAAAAAAAFiEQA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEgAAAACAAAA +DgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAG +AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA +AAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABA +BAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAA +AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJv +b3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAO +AAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9B +cHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUA +AAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxl +X3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAKwAAAAEAAAAAAAAA +EAAAACsAAABzZiUwQChzcmMsZXZlbnQpY2xvc2VfZmlnKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAO +AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu +b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA +AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u +IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw +cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AEkAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA +EAAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAF +AAAADgAAAEAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMA +AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAA +bWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25f +aGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAA +AAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAA +AAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0 +aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAsAAAA +AQAAAAAAAAAQAAAALAAAAHNmJTFAKHNyYyxldmVudClyZXNpemVfZmlnKG9iamVjdCxzcmMsZXZl +bnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAA +AAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBw +bGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFi +dWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA +AAEAAAABAAAASgAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAA +AQAAAAAAAAAQAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAABAAAQBmAAAADgAAADAIAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAQAAAAEAAAAAEA +AAAAAAAACQAAAAAIAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA +AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA +APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA +8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw +PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ +AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A +AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA +AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA +AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA +APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA +8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw +PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ +AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A +AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA +AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA +AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA +APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA +8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw +PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ +AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A +AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA +AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA +AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA +APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA +8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw +PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ +AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A +AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA +AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA +AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA +APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA +8D8AAAAAAADwPw4AAABAAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAA +AAkAAAAQAAAAAAAAAAAA8D8AAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAeQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAEBqQAAAAAAAAGlAAAAA +AAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAA +GAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADw +vwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAAQGpAAAAA +AAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA +AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEwAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAA +AAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAA +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 +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAA +AAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABPAAAAAgAAAA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAA +MAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeC95AA4AAABQ +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABA +cEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAA +AAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA +AAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA +AAAAAAAAAEBwQAAAAAAAQGpAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAFEAAAACAAAA +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 +AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA +AAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AABUAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAQAAEAeAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB +AAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAOBwQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA +AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAA +iUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAFYAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABAB +AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +AAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF +AAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQBAAABgAA +AAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOgDAAAGAAAACAAAAAIAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAA +AABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNh +dGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACgAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAA +AAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgA +AAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIA +AABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAA +AA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAA +YW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAAB +AAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRp +b24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBF +eHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C +AAAAAQAAAAEAAABXAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAA +AAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA +AAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABYAAAABgAAAA4AAABQAAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAA +ANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAOBwQAAAAAAAAGlA +AAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG +AAAAGAAAAAAAAN0CAAAAAQAAAAEAAABZAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAA +AAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCp5AA4AAABQAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAOBwQAAAAAAA +AGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAA +AAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAA +DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA +AAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAA +4HBAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA +AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAFsAAAACAAAADgAAADgAAAAGAAAACAAA +AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAA +AAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEA +AAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AAAIAAAABQAAAA4AAABQBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAA +AA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADd +DgAAAOgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAAB +AAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1 +bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAA +AAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAA +CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACgAgAABgAAAAgA +AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlv +bgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAA +AAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB +AAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhv +YmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2Vr +ZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMv +Q29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3Jl +YXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABcAAAABAAAAA4AAAAwAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA +AAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AABdAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA +AAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4A +AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA +AABAcEAAAAAAAOBwQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABeAAAAAgAAAA4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +AEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCt5 +AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA +AAAAAADAfEAAAAAAAKB0QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA +3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +HEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA +AAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA +CQAAACAAAAAAAAAAAMB8QAAAAAAAoHRAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAGAA +AAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE +AAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA +AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAA +AAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAA +AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAA +b2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG +AAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQBAAABgAAAAgAAAABAAAAAAAAAAUA +AAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAA +AAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAA +AAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1Iy +MDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +EAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQ +AAEAQAAAAA4AAACgAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA +BAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAA +AAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAA +CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUwQChzcmMsZXZl +bnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABAAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAA +AA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAAABAAAACVAAAA +L1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRo +V29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xi +b3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABhAAAA +BAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAA +AAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG +AAAAGAAAAAAAAN0CAAAAAQAAAAEAAABiAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAA +AADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA +AAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAKB0QAAAAAAAAGlAAAAAAAAATkAOAAAASAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA +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 +EAAAADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50 +KQAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAA +AAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AJUAAAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBw +bGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFi +dWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0A +AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAABmAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4A +AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABnAAAABgAAAA4AAABQ +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA +8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +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 +AAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAA +AAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA +AAAsAAAAAQAAAAAAAAAQAAAALAAAAHNmJTMyQChzcmMsZXZlbnQpaGVscF9jYWxsKG9iamVjdCxz +cmMsZXZlbnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAA +AAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI +AAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJh +cnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlv +bnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAA +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAAbQAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AAwAAAABAAAAAAAAABAAAAAMAAAAUHJvZHVjdCBIZWxwAAAAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAA +AAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEA +AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAA +AAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAFAAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAIAAAABAAAAagAAAGwAAAAL +AAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA +BAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA +AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAVHlwZWNoZWNrAAAAAAAAAA4AAAAQ +AQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +BQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAASAQAAAYA +AAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADgAwAABgAAAAgAAAACAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAA +AAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAA +AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGlj +YXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAmAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAA +AAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRo +AAAAAA4AAABoAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADMAAAABAAAAAAAAABAAAAAz +AAAAc2YlMzFAKHNyYyxldmVudClwdnNfZXh0X2NhbGxfc2ltKG9iamVjdCxzcmMsZXZlbnQpAAAA +AAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAA +AGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAA +AQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0 +aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIg +RXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA +AQAAAHAAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAWAAAAAQAAAAAA +AAAQAAAAFgAAAFBWUyBUeXBlY2hlY2sgU2ltVHlwZXMAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAA +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 +EAAAADAAAABzZiUyOUAoc3JjLGV2ZW50KXByZl9maWxlX2NhbGwob2JqZWN0LHNyYyxldmVudCkO +AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu +b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA +AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u +IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw +cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AHQAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA +EAAAAAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAQAAAAAQAAAAAAAAAQ +AAAAEAAAAFBWUyBDaGVjayBTdGF0dXMOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA +AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAA +AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C +AAAAAAAAAAAAAAADAAAAAAAAAA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEA +AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA +AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAA +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 +DgAAAOADAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAAB +AAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1 +bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAA +AAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAA +CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgA +AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlv +bgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAA +AAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB +AAAANQAAAAEAAAAAAAAAEAAAADUAAABzZiUyNEAoc3JjLGV2ZW50KXByb3Zlcl9zZWxlY3RfY2Fs +bChvYmplY3Qsc3JjLGV2ZW50KQAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2Vr +ZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMv +Q29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5p +dC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAAgAAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUA +AAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBQVlMADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAA +OAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAA +AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQA +AAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA +AAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAAC +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEgEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAA +AQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5l +bAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA +AQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAO +AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4A +AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAA +AJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAA +VQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdv +cmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAaAAAAAYAAAAIAAAABAAAAAAA +AAAFAAAACAAAAAEAAAA1AAAAAQAAAAAAAAAQAAAANQAAAHNmJTIzQChzcmMsZXZlbnQpcHJvdmVy +X3NlbGVjdF9jYWxsKG9iamVjdCxzcmMsZXZlbnQpAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAA +BQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAG +AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVz +YXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRM +QUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRv +b2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB +AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACCAAAABAAAAA4AAAAwAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAADAAAAAGAAAACAAA +AAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAENWQzMOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAD +AAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA +BAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA +AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABwAAAAEAAAABAAAAAAAAAAYAAAAcAAAAAAAA3QIAAAACAAAAAQAAAH8AAACB +AAAACwAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAA +AAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAdAAAAA4AAAAQAQAABgAAAAgAAAAB +AAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAA +AJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAA +BwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA +AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAASAQAAAYAAAAIAAAAAQAAAAAA +AAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADgAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9y +AAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQA +AAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExB +Ql9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAAEAABAEAAAAAOAAAAmAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUA +AAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABoAAAA +BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADEAAAABAAAAAAAAABAAAAAxAAAAc2YlMjJAKHNy +YyxldmVudCl0eXBlY2hlY2tfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAAAOAAAAQAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAA +AAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAA +igAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv +TWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBU +b29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAIQAAAAEAAAA +DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAO +AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAFR5 +cGVjaGVjawAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA +AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAA +AAADAAAAAAAAAA4AAABwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAADwAAAAEAAAABAAAAAAAA +AAYAAAA8AAAAAAAA3QIAAAAKAAAAAQAAAG8AAABxAAAAcwAAAHUAAAB3AAAAeQAAAHoAAAB8AAAA +fgAAAIMAAAALAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA +AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAAwAAAABgAA +AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAABAABABFZGl0DgAAAEAAAAAGAAAA +CAAAAAQAAAAAAAAABQAAAAgAAAABAAAACwAAAAEAAAAAAAAAEAAAAAsAAABPdXRwdXQgTW9kZQAA +AAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA +AAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4A +AABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAA +CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxh +YnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRs +ZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAA +AC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5 +cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9m +aWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAANAAAAAEAAAAA +AAAAEAAAADQAAABzZiUyMUAoc3JjLGV2ZW50KW11bHRpX3NlbGVjdF9jYWxsKG9iamVjdCxzcmMs +ZXZlbnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAA +ABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA +AQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkv +QXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMv +VGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAAiAAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAA +AAAAAQAAAAAAAAAQAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABAA +AAABAAAAAAAAABAAAAAQAAAATXVsdGlwbGUgT3V0cHV0cw4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAA +DgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAAB +AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYA +AAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAA +AAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA +AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAI +AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0 +AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAA +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 +AQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0 +aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIg +RXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA +AQAAAIwAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAWAAAAAQAAAAAA +AAAQAAAAFgAAAFBvcnRzIGFuZCBEYXRhIE1hbmFnZXIAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAA +DgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAAB +AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYA +AAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAA +AAgAAAABAAAAEgAAAAEAAAAAAAAAEAAAABIAAABTaG93IGVkaXQgY29udHJvbHMAAAAAAAAOAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C +AAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAAwAAAA +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 +AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp +bl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALAAAAAEA +AAAAAAAAEAAAACwAAABzZiUxNkAoc3JjLGV2ZW50KWNsb3NlX2ZpZyhvYmplY3Qsc3JjLGV2ZW50 +KQAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAA +CQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACK +AAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxp +Y2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVs +YXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAJQAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAAEAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAFAAAAAQAA +AAAAAAAQAAAABQAAAENsb3NlAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA +AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAI +AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA +AAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAA +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 +BgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QA +AAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAA +UAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBs +aWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAA +AAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3Bh +dGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALAAAAAEAAAAAAAAAEAAA +ACwAAABzZiUxM0Aoc3JjLGV2ZW50KW9wZW5fY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAAAAAOAAAA +QAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255 +bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAA +AAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1 +cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVz +c2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJoA +AAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAA +AAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAHAAAAAQAAAAAAAAAQAAAA +BwAAAE9wZW4uLi4ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAA +AAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAA +AwAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQ +AAEAbgAAAA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUA +AAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAA +BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABt +YXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9o +YW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAA +AB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAA +AAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRo +aW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAACsAAAAB +AAAAAAAAABAAAAArAAAAc2YlMTJAKHNyYyxldmVudCluZXdfY2FsbChvYmplY3Qsc3JjLGV2ZW50 +KQAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAA +AAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA +igAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBs +aWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1 +bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA +AQAAAAEAAACcAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAABAAAAAAAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEA +AAAAAAAAEAADAE5ldwAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA +AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAA +AAADAAAAAAAAAA4AAABYAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAACgAAAAEAAAABAAAAAAAA +AAYAAAAoAAAAAAAA3QIAAAAFAAAAAQAAAJMAAACVAAAAlwAAAJkAAACbAAAACwAAAA4AAAA4AAAA +BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAA +AN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA +CAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCx5AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAVkAAAAAAAFB+QAAAAAAAQG9AAAAAAAAA +TkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAA +AAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +BQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAA +AAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAIBWQAAAAAAAUH5AAAAAAABA +b0AAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA +AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJ4AAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMA +AAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAA +AA4AAABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAG +AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1h +dGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hh +bmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAA +HwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAA +AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp +bl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMwAAAAEA +AAAAAAAAEAAAADMAAABzZiUxMUAoc3JjLGV2ZW50KXRleHRib3hfY2FsbGJhY2sob2JqZWN0LHNy +YyxldmVudCkAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAA +AAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI +AAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJh +cnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlv +bnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAA +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAAnwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAA +UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAoAAAAAYAAAAOAAAAUAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/ +AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFZAAAAAAABQfkAAAAAA +AEBvQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA +AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAoQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAA +AAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAElucHV0cwAADgAAAFAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAUQAAAAAAAUH5A +AAAAAAAAVEAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB +AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAA +AAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAUQAAAAAAAUH5AAAAAAAAAVEAAAAAAAABO +QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAKMAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAA +AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +JEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAACkAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA +AAAAAAkAAAAgAAAAAAAAAAAAFEAAAAAAAFB+QAAAAAAAAFRAAAAAAAAATkAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AAClAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAQAAEAZgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB +AAAAAAAAAAkAAAAgAAAAAAAAAACQekAAAAAAAFB+QAAAAAAAQG9AAAAAAAAATkAOAAAASAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA +AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAA +iUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAJB6QAAAAAAAUH5AAAAAAABAb0AAAAAAAABOQA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAKcAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABAB +AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +AAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF +AAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABIBAAABgAA +AAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAACAAAAAIAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAA +AABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNh +dGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAA +AAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgA +AAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMwAAAAEAAAAAAAAAEAAAADMA +AABzZiUxMEAoc3JjLGV2ZW50KXRleHRib3hfY2FsbGJhY2sob2JqZWN0LHNyYyxldmVudCkAAAAA +AA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAA +YW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAAB +AAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRp +b24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBF +eHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAA +CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB +AAAAqAAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA +AAAQAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA +AAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAChADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAqQAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAA +AACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAkHpAAAAAAABQfkAAAAAAAEBvQAAAAAAAAE5A +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAAqgAAAAIAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA +AAAPAAAAAQAAAAAAAAAQAAAADwAAAEV4cHJlc3Npb24gTmFtZQAOAAAAUAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHVAAAAAAABQfkAAAAAA +AABUQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAA +AAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJ +QAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +CQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHVAAAAAAABQfkAAAAAAAABUQAAAAAAAAE5ADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAArAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAK0AAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +HEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA +AAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA +CQAAACAAAAAAAAAAAEB1QAAAAAAAUH5AAAAAAAAAVEAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAK4A +AAACAAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACAAAAAEAAAAAAAAAEAAA +AAgAAABTZXR0aW5ncw4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA +AAAAAAkAAAAgAAAAAAAAAADAgkAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAAEAEAAAYAAAAI +AAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAA +AA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAA +AQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB +AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEAEAAAGAAAACAAAAAEA +AAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFy +YXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9N +QVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABm +aWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAA +YAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAvAAAAAQAAAAAAAAAQAAAALwAAAHNmJTlA +KHNyYyxldmVudClzZXR0aW5nc19jYWxsKG9iamVjdCxzcmMsZXZlbnQpAA4AAABAAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAA +AA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAA +L1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRo +V29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xi +b3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAsAAAAAQAAAAOAAAA +MAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABI +AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIA +AAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA +AAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAA +ACAAAAAAAAAAAMCCQAAAAAAAWIFAAAAAAAAAVEAAAAAAAABEQA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAALEAAAAC +AAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEA +AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAA +AAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAABEQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA +AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACyAAAA +BgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg +AAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAA +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 +AAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAYgEAAAAAA +AFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB +AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC2AAAAAgAAAA4AAAA4AAAABgAAAAgA +AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAA +AAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB +AAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA +AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAtwAAAAYAAAAOAAAAUAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ +ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAGIBAAAAAAABYgUAAAAAAAABUQAAA +AAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAAuAAAAAIAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA +CAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAFR5cGVjaGVjawAAAAAAAAAOAAAAUAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4HpAAAAAAABY +gUAAAAAAAABUQAAAAAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAA +AAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAA +AAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAA +AADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAA +AAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAA +AGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAA +AQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAG +AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAA +AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5j +dGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UA +AAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAAMAAAAAEAAAAAAAAAEAAAADAAAABzZiU3QChzcmMsZXZlbnQpdHlwZWNoZWNrX2NhbGwo +b2JqZWN0LHNyYyxldmVudCkOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAA +AQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9M +aWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxl +Y3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAA +AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAALoAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8A +AAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADgekAAAAAAAFiBQAAAAAAA +AFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA +AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC7AAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAD +AAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA +AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA +AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAvAAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJ +QAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +CQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4HpAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAAvQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAABTeW50YXgAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACQdUAAAAAAAFiBQAAAAAAAAFRA +AAAAAAAAREAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAF +AAAADgAAAEAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMA +AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAA +bWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25f +aGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAA +AAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAA +AAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0 +aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAsAAAA +AQAAAAAAAAAQAAAALAAAAHNmJTZAKHNyYyxldmVudCljaGVja19jYWxsKG9iamVjdCxzcmMsZXZl +bnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAA +AAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBw +bGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFi +dWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgA +AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA +AAEAAAABAAAAvwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAA +AQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB +AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAA +AAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAJB1QAAAAAAAWIFAAAAAAAAAVEAAAAAAAABE +QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAMAAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAA +AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +JEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAADBAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA +AAAAAAkAAAAgAAAAAAAAAACQdUAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AADCAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAgAAAABAAAAAAAA +ABAAAAAIAAAAU2F2ZSBFeHQOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA +AQAAAAAAAAAJAAAAIAAAAAAAAAAAQHBAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAABABAAAG +AAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A +AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAA +AAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQA +BwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB +AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgA +AAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABz +ZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlv +bnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAA +AAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAA +DgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALwAAAAEAAAAAAAAAEAAAAC8AAABz +ZiU1QChzcmMsZXZlbnQpc2F2ZV9leHRfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAOAAAAQAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAA +AAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAA +igAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv +TWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBU +b29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMQAAAAEAAAA +DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAA +AN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +ABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA +AAkAAAAgAAAAAAAAAABAcEAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADF +AAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA +BAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA +AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA +AAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +xgAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJ +AAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAA +UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA +QHBAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAxwAAAAIAAAAOAAAAOAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAFAAAAAQAAAAAAAAAQAAAABQAAAENsb3NlAAAA +DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA +AAAAAOBlQAAAAAAAWIFAAAAAAAAAVEAAAAAAAABEQA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUA +AAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA +AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAA +CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVj +dAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA +AAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNl +bnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAA +AAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIu +YXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAv +AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAA +AAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAA +AAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAA +AAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAQAAACsAAAABAAAAAAAAABAAAAArAAAAc2YlNEAoc3JjLGV2ZW50KWNs +b3NlX2ZpZyhvYmplY3Qsc3JjLGV2ZW50KQAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAA +AAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAA +CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJh +YW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIg +QWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wv +QEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADJAAAABAAAAA4AAAAwAAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A +AAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAA +AAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA +IAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4GVA +AAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAygAAAAIAAAAOAAAAOAAAAAYA +AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADd +AgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE +AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERADgAAAFAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMsAAAAGAAAADgAAAFAAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAA +AAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAOBlQAAAAAAAWIFAAAAAAAAA +VEAAAAAAAABEQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA +AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMwAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA +BQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAFNhdmUOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFZAAAAAAABYgUAAAAAAAABUQAAA +AAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAA +AA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAG +AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1h +dGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hh +bmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAA +HwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAA +AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp +bl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAKwAAAAEA +AAAAAAAAEAAAACsAAABzZiUzQChzcmMsZXZlbnQpc2F2ZV9jYWxsKG9iamVjdCxzcmMsZXZlbnQp +AAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAA +CQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACK +AAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxp +Y2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVs +YXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAM4AAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA +AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAA +AIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAVkAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAADPAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQ +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRA +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAA0AAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA +AAAJAAAAIAAAAAAAAAAAgFZAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +0QAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQ +AAQARWRpdA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA +AAAAAAAJAAAAIAAAAAAAAAAAABRAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAABABAAAGAAAA +CAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQA +AAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAA +AAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgAAAAB +AAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBh +cmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMv +TUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAA +ZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAA +AGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALwAAAAEAAAAAAAAAEAAAAC8AAABzZiUy +QChzcmMsZXZlbnQpZWRpdF90b2dfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAOAAAAQAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAA +AAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAAigAA +AC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0 +aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29s +Ym94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAANMAAAAEAAAADgAA +ADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C +AAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA +AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxA +DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA +AAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA +AAAgAAAAAAAAAAAAFEAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADUAAAA +AgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAB +AAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAA +AAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAALQAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAArwAAAAcAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACmAAAA +BwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBm +AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHgs +eQAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA +AAAAAN0CAAAAAQAAAAEAAACdAAAABwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAgADdADgAAADgAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAECPQA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAWUAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAA2QAAABAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACrAAAABwAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAKIAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAABAAAA +EQAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAANoAAAASAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAASAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA +AQAAAAEAAADbAAAAEwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C +AAAAAQAAAAEAAADcAAAAFAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAiQAAAAsAAAAO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAACHAAAACwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA +AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAH8AAAALAAAADgAAAEgAAAAGAAAA +CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB +AAAAgQAAAAsAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAN0AAAAVAAAADgAAAEgAAAAG +AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA +AAABAAAAkAAAAAsAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACOAAAACwAAAA4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAEAEAAAYAAAAI +AAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAA +AA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAA +AQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB +AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAAAAEA +AAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFy +YXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9N +QVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABm +aWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAA +aAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNmJTBA +KHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAAAEAA +AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1v +dXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAAAAAA +EAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBw +b3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Np +b24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA +AQAAAAcAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA +AAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB +AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAN4AAAAGAAAADgAAAFAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAA +AAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAAoHlAAAAAAAAAaUAAAAAAAABO +QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAN8AAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAcAAAAOAAAAMAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAeDw9MQ4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAA +SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C +AAAAAQAAAAEAAAA1AAAACAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAACQAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAAoAAAAJAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAZAAAAAcAAAAOAAAAMAAAAAYAAAAIAAAABAAA +AAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeC15AA4AAABIAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAA +APA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAANgAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAKAAAACQAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAF8AAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEA +AAAAAAAAEAADAHgreQAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAA +AAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAAJ +AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAAFQAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABaAAAABwAAAA4AAAAwAAAA +BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB4KnkADgAAAEgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAA +AAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA2AAAACQAAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABUAAAAJ +AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAAVQAAAAcAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAQAAEAeAAAAA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAG +AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA +AAABAAAABAAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAgAAAACQAAAA4AAABIAAAABgAAAAgAAAANAAAA +AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAFAAAAAH +AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHgv +eQAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAA +AAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA +BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADYAAAAJAAAADgAAAEgAAAAG +AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA +AAABAAAAIAAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABLAAAABwAAAA4AAAAwAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQB5AAAADgAAAEgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA +8D8OAAAAYAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAsAAAABAAAAAQAAAAAAAAAGAAAALAAA +AAAAAN0CAAAAAQAAAAYAAAADAAAA4AAAAOEAAADiAAAA4wAAAOQAAAAWAAAAAAAAAA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAADUAAAAIAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAA +CgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAADUAAAAIAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAAMAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAZgAAAA4AAAAwAAAA +BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB4LHkADgAAAJgBAAAG +AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAAIwAAAHNl +dAAAAABpbnB1dHMAY291bnQAAHJhbmdlAABleGNlcHQAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAQI9ADgAAADgA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABZ +QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA +AAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ +AAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA +AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEYAAAAPAAAADgAAADgAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAACQ +AAAABgAAAAgAAAAMAAAAAAAAAAUAAAAIAAAAFwAAAAEAAAABAAAAAAAAAAUAAABcAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAPguAAAGAAAACAAAAAEAAAAAAAAA +BQAAAAgAAAAXAAAAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB +AAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUA +AAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAA +AAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAA +CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4 +AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAA +AAAOAAAAYBIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAGQAA +AAEAAAB4BQAAR3JpZDIAAAAAAAAAAAAAAAAAAAAAAAAAAEdyaWQxAAAAAAAAAAAAAAAAAAAAAAAA +AABHcmlkMAAAAAAAAAAAAAAAAAAAAAAAAAAAbWFpbl9maWcAAAAAAAAAAAAAAAAAAAAAAGZyYW1l +AAAAAAAAAAAAAAAAAAAAAAAAAABmaWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc2Nyb2xsX3YAAAAA +AAAAAAAAAAAAAAAAAGVkaXRfdG9nAAAAAAAAAAAAAAAAAAAAAABzYXZlX3BiAAAAAAAAAAAAAAAA +AAAAAAAAcHZzX3BiAAAAAAAAAAAAAAAAAAAAAAAAAGNsb3NlX3BiAAAAAAAAAAAAAAAAAAAAAABz +YXZlX2V4dF9wYgAAAAAAAAAAAAAAAAAAY2hlY2tfcGIAAAAAAAAAAAAAAAAAAAAAAGlucHV0X3Bi +AAAAAAAAAAAAAAAAAAAAAABzZXR0aW5nc19wYgAAAAAAAAAAAAAAAAAAZnVuY3Rpb25fbmFtZV9j +b250cm9sAAAAAGZ1bmN0aW9uX25hbWVfdGV4dAAAAAAAAABmdW5jdGlvbl9pbnB1dHNfdGV4dAAA +AAAAZnVuY3Rpb25faW5wdXRzX2NvbnRyb2wAAGVkaXQAAAAAAAAAAAAAAAAAAAAAAAAAAABpbml0 +aWFsaXplZAAAAAAAAAAAAAAAAAAAYmxvY2tfaGFuZGxlAAAAAAAAAAAAAAAAAHNldHRpbmdzAAAA +AAAAAAAAAAAAAAAAAABoZWFkZXJfaGVpZ2h0AAAAAAAAAAAAAAAAZmlnX2hlaWdodAAAAAAAAAAA +AAAAAAAAAGZpZ193aWR0aAAAAAAAAAAAAAAAAAAAAABwYl9vZmZzZXQAAAAAAAAAAAAAAAAAAAAA +cGJfd2lkdGgAAAAAAAAAAAAAAAAAAAAAAHBiX2hlaWdodAAAAAAAAAAAAAAAAAAAAABodHhfaGVp +Z2h0AAAAAAAAAAAAAAAAAAAAdGV4dF93aWR0aAAAAAAAAAAAAAAAAAAAAG5hbWVfbGFiZWwAAAAA +AAAAAAAAAAAAAABpbnB1dF9sYWJlbAAAAAAAAAAAAAAAAAAARGF0YQAAAAAAAAAAAAAAAAAAAAAA +AAAAAFBWUwAAAAAAAAAAAAAAAAAAAAAAAAAAAABDVkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHZz +X2NoZWNrZWQAAAAAAAAAAAAAAAAAAG1vZGUAAAAAAAAAAAAAAAAAAAAAAAAAAABFTUxHZW4AAAAA +AAAAAAAAAAAAAAAAAAAAVGFibGVCbGsAAAAAAAAAAAAAAAAAAAAAAHNhdmVkAAAAAAAAAAAAAAAA +AAAAAAAAAAB2YWxpZGF0aW9uX3JlcG9ydF9oYW5kbGUAbXVsdGlfdHlwZQAAAAAAAAAAAAAAAAAA +AG11bHRpX21vZGUAAAAAAAAAAAAAAAAAAABtdWx0aV9ncnAAAAAAAAAAAAAAAAAAAAAAbXVsdGlf +b3B0X3JlZwAAAAAAAAAAAAAAAG11bHRpX29wdF9vdXQAAAAAAAAAAAAAAABwcm92ZXJfb3B0X3B2 +cwAAAAAAAAAAAAAAcHJvdmVyX29wdF9jdmMAAAAAAAAAAAAAAHZlcnNpb24AAAAAAAAAAAAAAAAA +AAAAAAB1bmRvX21hbgAAAAAAAAAAAAAAAAAAAAAAdW5kb19vcHQAAAAAAAAAAAAAAAAAAAAAAHJl +ZG9fb3B0AAAAAAAAAAAAAAAAAAAAAABkZWZhdWx0X3Byb3ZlcgAAAAAAAAAAAAAAUFZTX2NvbnN0 +AAAAAAAAAAAAAAAAAAAAAENWQ19jb25zdAAAAAAAAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAXkAOAAAAOAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAwIJADgAAADgAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAACJQA4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAAFEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAAFRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAABEQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAQG9ADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA +AAAFAAAAAQAAAAAAAAAQAAAABQAAADAuNy40AAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAC +AAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYA +AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA +AMgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAA8AAAABAAAA +hwAAAHBhcmVudF9jZWxsAAAAAHBhcmVudF9ncmlkAAAAAGNlbGxzAAAAAAAAAAAAAHNwbGl0X3Bi +AAAAAAAAAG51bV9jZWxscwAAAAAAAGdyaWRfaW5kZXgAAAAAAHJHcmlkAAAAAAAAAAAAAG5ld19j +ZWxsX3BiAAAAAGRlbGV0ZV9jZWxsX3BiAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAGgFAAAGAAAACAAAAAIAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABYAAAABAAAAYAEAAHN1YmdyaWQAAAAAAAAAAAAA +AAAAAABjb25kAAAAAAAAAAAAAAAAAAAAAAAAY29uZF90ZXh0AAAAAAAAAAAAAAAAAGNlbGxfaW5k +ZXgAAAAAAAAAAAAAAABwYXJlbnRfZ3JpZAAAAAAAAAAAAAAAd2lkdGgAAAAAAAAAAAAAAAAAAAAA +AGhlaWdodAAAAAAAAAAAAAAAAAAAAABncmlkX3BiAAAAAAAAAAAAAAAAAAAAcGJfZmxhZwAAAAAA +AAAAAAAAAAAAAGNvbG9yAAAAAAAAAAAAAAAAAAAAAABjb25kaXRpb25fdGV4dF93aWR0aAAAY29u +ZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAAAAAAABjb25kaXRpb25fdGV4dF95 +AAAAAAAAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aAAAAAAAAAAOAAAAMAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAA +ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA +AAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +CQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAkQA4AAAA4AAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAANEAOAAAAOAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAD5A +DgAAAPgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAYAAAAB +AAAAEgAAAENlbGxzAEdyaWQxAEdyaWQyAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAI +AAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAA +AAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAACAAA +AAIAAAAAAAAABQAAAAgAAAABAAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4AAAA +BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAO +AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEA +AAAAAAAADgAAANAFAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE +AA8AAAABAAAAHQEAAHB2c19pbmNsdWRlcwAAAGNvdW50ZXJfdHJpYWxzAGNvdW50ZXJfcmFuZ2UA +AGV4Y2VwdAAAAAAAAAAAAGZpZ193aWR0aAAAAAAAAGZpZ19oZWlnaHQAAAAAAG9wZW4AAAAAAAAA +AAAAAGZpZwAAAAAAAAAAAAAAAGJ1dHRvbl93aWR0aAAAAGJ1dHRvbl9oZWlnaHQAAGJ1dHRvbl9v +ZmZzZXQAAHRpdGxlX2hlaWdodAAAAGxhYmVsX2hlaWdodAAAAGxhYmVsX3dpZHRoAAAAAHRleHRf +b2Zmc2V0AAAAAGluY2x1ZGVfdGV4dAAAAGNvdW50X3RleHQAAAAAAHJhbmdlX3RleHQAAAAAAGV4 +Y2VwdF9jaGVjawAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA +AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA +AAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAAB5QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAADAckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAE5ADgAAADgAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAA+QA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAJEAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AD5ADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAAA+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAADAUkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAA +AAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAA +AAAAAAEAAAAAAAAACQAAAAAAAAAOAAAACAMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAFAAQAEAAAAAEAAACgAAAAR3JpZDAAAAAAAAAAAAAAAEdyaWQxAAAAAAAAAAAA +AABHcmlkMgAAAAAAAAAAAAAAZnVuY3Rpb25fbmFtZQAAAGZ1bmN0aW9uX2lucHV0cwBzZXR0aW5n +cwAAAAAAAAAAY2hlY2tlZAAAAAAAAAAAAG9wZW4AAAAAAAAAAAAAAABmaWcAAAAAAAAAAAAAAAAA +bXVsdGlfbW9kZQAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA +AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA +AAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA +AAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA +AAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA +CQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ +AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkA +AAAAAAAADgAAAGgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE +AA0AAAABAAAAaAAAAGRlZmF1bHRfdHlwZQBwdnNfdmVyc2lvbgAAb3V0cHV0X3R5cGUAAGlucHV0 +X3R5cGUAAABkYXRhAAAAAAAAAAAAbW9kZQAAAAAAAAAAAG11bHRpX21vZGUAAAB0eXBlX21vZGUA +AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHJl +YWwOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA +AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA +DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO +AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A +AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AADwPw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA +AAAADgAAALgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAgA +AAABAAAAEAAAAGNvbW1hbmQAZGF0YQAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA +AAEAAAAEAAAAAQAAAAAAAAAQAAQAY3ZjMw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAABABAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAABQAEAA0AAAABAAAAJwAAAGRhdGEAAAAAAAAAAABkYXRhdHlwZQAAAAAA +bXVsdGlfb3V0cHV0AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA +AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA +AAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAADwPw4AAABYAQAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAUABAAOAAAAAQAAADgAAABxdWV1ZQAAAAAAAAAAAG1heF9kZXB0aAAAAAAAY3Vy +cmVudF9kZXB0aAB1bmRvX2xldmVsAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABJQA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAkAEAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQADAAAAAEAAAA8AAAAQ2VsbDEAAAAAAAAAQ2VsbDIAAAAA +AAAAcmVzdWx0AAAAAAAAcmVzdWx0X3RleHQAY29sb3IAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAiAAAAAYAAAAIAAAACQAA +AAAAAAAFAAAACAAAAAEAAABYAAAAAQAAAAAAAAACAAAAWAAAAAABSU0AAAAADgAAAEgAAAAGAAAA +CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAUAAAABAAAABQAAAE1DT1MA +AAAADgAAAAAAAAA +__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml + + + +

932f3cac-c6e8-4ef0-91e5-d14c0e1a6678

+

maci64

+ +

%<Auto>

+

%<Auto>

+

574183990

+

%<AutoIncrement:24.0>

+
+ +

none

+
+ +

normal

+ +

$bdroot

+ + $bdroot + + + + +
+
+ +

warning

+
+ + +

Ensure deterministic transfer (maximum delay)

+

Ensure data integrity only

+

Ensure deterministic transfer (minimum delay)

+

None

+
+
+ +
+
+ +__MWOPC_PART_BEGIN__ /simulink/configSet0.xml + + + +

[]

+

+ + +

[]

+

+

[]

+

0.0

+

10.0

+

auto

+

on

+

auto

+

auto

+

5

+

auto

+

10*128*eps

+

1000

+

4

+

1

+

auto

+

auto

+

1

+

1e-3

+

on

+

off

+

off

+

ode45

+

auto

+

auto

+

DisableAll

+

UseLocalSettings

+

Nonadaptive

+

TrustRegion

+

off

+

off

+

Fast

+

off

+

off

+

Unconstrained

+

Whenever possible

+

[]

+

off

+

off

+

ode3

+
+ +

[]

+

+

[]

+

1

+

[t, u]

+

xFinal

+

xInitial

+

on

+

1000

+

off

+

off

+

off

+

off

+

Array

+

ModelDataLogs

+

on

+

off

+

on

+

on

+

off

+

on

+

off

+

streamout

+

on

+

off

+

xout

+

tout

+

yout

+

logsout

+

dsmout

+

RefineOutputTimes

+

[]

+

out

+

1

+

off

+

timeseries

+

out.mat

+

[-inf, inf]

+
+ + + BooleansAsBitfields + PassReuseOutputArgsAs + PassReuseOutputArgsThreshold + ZeroExternalMemoryAtStartup + ZeroInternalMemoryAtStartup + OptimizeModelRefInitCode + NoFixptDivByZeroProtection + UseSpecifiedMinMax + EfficientTunableParamExpr + +

+

[]

+

on

+

on

+

on

+

Tunable

+

off

+

off

+

off

+

off

+

double

+

off

+

off

+

on

+

on

+

off

+

off

+

on

+

off

+

+

on

+

off

+

uint_T

+

Same as modeled

+

on

+

64

+

Structure reference

+

12

+

2147483647

+

on

+

5

+

off

+

off

+

Native Integer

+

on

+

on

+

off

+

off

+

off

+

on

+

inf

+

Inherit from target

+

on

+

off

+

off

+

off

+

on

+

on

+

off

+

off

+

level2

+

Balanced

+

on

+

off

+

off

+

GradualUnderflow

+

off

+
+ + + UseOnlyExistingSharedCode + +

+

[]

+

error

+

none

+

none

+

none

+

error

+

none

+

UseLocalSettings

+

UseLocalSettings

+

UseLocalSettings

+

warning

+

warning

+

warning

+

warning

+

on

+

Classic

+

none

+

off

+

UseLocalSettings

+

warning

+

warning

+

none

+

error

+

warning

+

warning

+

warning

+

warning

+

error

+

error

+

error

+

none

+

warning

+

none

+

warning

+

none

+

warning

+

warning

+

error

+

error

+

none

+

warning

+

warning

+

none

+

none

+

none

+

none

+

none

+

none

+

warning

+

none

+

warning

+

warning

+

warning

+

error

+

none

+

error

+

none

+

warning

+

warning

+

UseLocalSettings

+

on

+

off

+

none

+

error

+

none

+

none

+

warning

+

warning

+

none

+

warning

+

error

+

warning

+

warning

+

error

+

none

+

warning

+

none

+

warning

+

ErrorLevel1

+

WarnAndRepair

+

none

+

warning

+

warning

+

error

+

error

+

none

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

error

+

warning

+

warning

+

none

+

warning

+

warning

+

all

+

warning

+

on

+

warning

+

warning

+

off

+

+

none

+

off

+

warning

+

none

+
+ +

[]

+

+

[]

+

8

+

16

+

32

+

32

+

64

+

32

+

64

+

32

+

32

+

32

+

Char

+

None

+

Undefined

+

Unspecified

+

32

+

on

+

off

+

32-bit Generic

+

8

+

16

+

32

+

32

+

64

+

32

+

64

+

32

+

32

+

32

+

Char

+

None

+

on

+

off

+

Undefined

+

Unspecified

+

32

+

32

+

32

+

Specified

+

off

+

on

+

on

+

on

+

EmbeddedCoderHSP

+
+ +

[]

+

+

[]

+

IfOutOfDateOrStructuralChange

+

on

+

error

+

off

+

on

+

None

+

Multi

+

Infer from blocks in model

+

+

on

+

off

+

off

+

off

+
+ +

[]

+

+

[]

+

+

+

+

+

[]

+

+

+

+

+

+

+

on

+

on

+

on

+

off

+

off

+

off

+

off

+

off

+

on

+

50

+

on

+

on

+

on

+

65536

+

off

+

[]

+

NotSpecified

+

UseInterfaceOnly

+

off

+

None

+

+

generic

+

C

+

off

+

200

+

1024

+

off

+

+

+

mkl-dnn

+

on

+
+ + + IncludeHyperlinkInReport + GenerateTraceInfo + GenerateTraceReport + GenerateTraceReportSl + GenerateTraceReportSf + GenerateTraceReportEml + PortableWordSizes + GenerateWebview + GenerateCodeMetricsReport + GenerateCodeReplacementReport + GenerateMissedCodeReplacementReport + GenerateErtSFunction + CreateSILPILBlock + CodeExecutionProfiling + CodeProfilingSaveOptions + CodeProfilingInstrumentation + CodeStackProfiling + +

+

grt.tlc

+

None

+

off

+

off

+

+

off

+

make_rtw

+

on

+

off

+

+

grt_default_tmf

+

+

off

+

on

+

off

+

[]

+

off

+

off

+

off

+

off

+

off

+

off

+

+

+

+

+

+

+

+

+

+

+

+

Automatically locate an installed toolchain

+

Faster Builds

+

[]

+

off

+

off

+

off

+

None

+

off

+

executionProfile

+

SummaryOnly

+

off

+

off

+

C

+

None

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

[]

+

+

Off

+

1024

+

+

-1

+

discrete

+

200

+

off

+

1024

+

on

+

on

+

on

+

off

+

3.5

+

+

+

0

+

none

+

on

+

19.05

+

unspecified

+ + + + IgnoreCustomStorageClasses + IgnoreTestpoints + InsertBlockDesc + InsertPolySpaceComments + SFDataObjDesc + MATLABFcnDesc + SimulinkDataObjDesc + DefineNamingRule + SignalNamingRule + ParamNamingRule + InlinedPrmAccess + CustomSymbolStr + CustomSymbolStrGlobalVar + CustomSymbolStrType + CustomSymbolStrField + CustomSymbolStrFcn + CustomSymbolStrFcnArg + CustomSymbolStrBlkIO + CustomSymbolStrTmpVar + CustomSymbolStrMacro + ReqsInCode + BlockCommentType + InternalIdentifier + CustomSymbolStrModelFcn + CustomSymbolStrUtil + CustomSymbolStrEmxType + CustomSymbolStrEmxFcn + CustomUserTokenString + +

+

[]

+

+

off

+

on

+

Auto

+

on

+

off

+

31

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

1

+

8

+

$R$N$M

+

$N$R$M_T

+

$N$M

+

$R$N$M$F

+

$R$N

+

rt$I$N$M

+

rtb_$N$M

+

$N$M

+

$R$N$M

+

$N$C

+

emxArray_$M$N

+

emx$M$N

+

+

+

None

+

+

None

+

+

None

+

+

off

+

off

+

on

+

BlockPathComment

+

on

+

off

+

off

+

+

Shortened

+

Literals

+

off

+

off

+

[]

+

error

+
+ + + GeneratePreprocessorConditionals + IncludeMdlTerminateFcn + RemoveResetFunc + SuppressErrorStatus + ERTCustomFileBanners + GenerateSampleERTMain + GenerateTestInterfaces + ModelStepFunctionPrototypeControlCompliant + CPPClassGenCompliant + PortableWordSizes + PurelyIntegerCode + SupportComplex + SupportAbsoluteTime + SupportContinuousTime + SupportNonInlinedSFcns + PreserveStateflowLocalDataDimensions + GenerateAllocFcn + ExistingSharedCode + ParenthesesLevel + ERTMultiwordTypeDef + MultiwordTypeDef + RemoveDisableFunc + +

+

[]

+

ansi_tfl_table_tmw.mat

+

+

+

NOT IN USE

+

C89/C90 (ANSI)

+

None

+

Auto

+

System defined

+

2048

+

256

+

on

+

off

+

+

off

+

off

+

on

+

on

+

on

+

on

+

on

+

off

+

off

+

off

+

off

+

Auto

+

off

+

on

+

rt_

+

on

+

Nonreusable function

+

off

+

on

+

on

+

on

+

on

+

off

+

off

+

off

+

Nominal

+

Nominal

+

Simulink.SoftwareTarget.GRTCustomization

+

off

+

on

+

off

+

off

+

on

+

off

+

on

+

on

+

[]

+

[]

+

1,2,3,4,...

+

Size,Breakpoints,Table

+

Size,Breakpoints,Table

+

Column-major

+

error

+

$R$E

+

$R$E

+

$R_data

+ + None + +

off

+

off

+

off

+

off

+

1000000

+

0

+

ext_comm

+

+

Level1

+

off

+

off

+

off

+

off

+

off

+

Error

+
+
+
+ +

[]

+

Simulink Coverage Configuration Component

+

[]

+

Simulink Coverage

+

off

+

EntireSystem

+

on

+

off

+

/

+

covdata

+

+

dw

+

+

+

off

+

on

+

on

+

on

+

on

+

covCumulativeData

+

off

+

on

+

slcov_output/$ModelName$

+

$ModelName$_cvdata

+

on

+

off

+

+

off

+

on

+

1e-05

+

0.01

+

off

+

0

+

0

+

Masking

+
+
+

Configuration

+

Solver

+

[ 200, 197, 1080, 827 ]

+

+

+
+ +__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml + + + Configuration + + +__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml + + +

0

+

0

+

+

0

+

0

+

0

+

0

+

0

+

0

+

0

+

Unset

+

0

+

Simulink

+

0

+

0

+

1

+
+ +__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml + + + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml + + + + + + + + + false + Default + -2147483648 + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml + + + + + HighNumberFirst + Default + + + + + + Default + graph.Graph + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_8.xml + + +

f/code

+

[364 306 161 561]

+

[0 156.75 0 153.75]

+

[1 1 1366 768 1.25]

+

8

+

LIBRARY_TOOLBAR

+

6

+

CLUSTER_CHART

+

EML_CHART

+

2

+

1

+ +

f

+
+ + +

eML_blk_kernel()

+

[18 64.5 118 66]

+

12

+

SUBCHART

+

8

+

FUNC_STATE

+

CLUSTER_STATE

+ +

1

+

function output = f(x,y) +%%#eml +output=x-y; +if(y<0) + if(x<=1) + output = x-y; + elseif(x>1) + output = x+y; + end +elseif(y==0) + if(x<=1) + output = x*y; + elseif(x>1) + output = x; + end +elseif(y>0) + if(x<=1) + output = x/y; + elseif(x>1) + output = y; + end +end +

+

Matrix(4,1) +[205.0, 227.0, 1080.0, 733.0]

+

1

+
+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

OUTPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

{eML_blk_kernel();}

+

[32.125 19.875 102.544 14.964]

+

12

+ +

[0 0 1 0 23.5747 14.625 0 0]

+
+ +

3

+

[1 0 -1 0 23.5747 42.5747 0 0]

+
+

[23.5747 24.9468]

+

[23.575 23.575 14.625 34.575]

+

8

+

SMART

+ +

BOTH_STICK

+
+

1

+
+ +

[23.5747 49.5747 7]

+

8

+

CONNECTIVE_JUNCTION

+
+
+
+ +__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml + + + +

80000046

+ + +

Default Simulink S-Function Target.

+
+ +
+
+ +

7

+

f/code

+

8

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml + + +

[361, 208, 947, 921]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

Simulink

+ +

[35, 38, 65, 52]

+

-1

+
+ +

[35, 38, 65, 52]

+

-2

+

2

+
+ +

[2, 1]

+

[250, 49, 320, 96]

+

-3

+

1.31

+

Stateflow.Translate.translate

+

ExplicitOnly

+

on

+

off

+

MATLAB Function

+ +
+ +

[35, 53, 65, 67]

+

-4

+
+ +

1

+

4#out:1

+

3#in:1

+
+ +

2

+

5#out:1

+

3#in:2

+
+ +

3

+

3#out:1

+

6#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml + + +

[185, 218, 828, 891]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

25

+

Simulink

+ +

[20, 101, 40, 119]

+

-1

+
+ +

[20, 136, 40, 154]

+

-2

+

2

+
+ +

[1, 1]

+

[270, 230, 320, 270]

+

2

+

1

+
+ +

Stateflow S-Function 2

+

[2, 2]

+

[180, 100, 230, 160]

+

1

+

sf_sfun

+

[2 2]

+

off

+

off

+

off

+ +

2

+

output

+
+
+ +

[460, 241, 480, 259]

+

3

+
+ +

[460, 101, 480, 119]

+

-6

+
+ +

6

+

3::1#out:1

+

[120, 0]

+

3::23#in:1

+
+ +

7

+

3::18#out:1

+

3::23#in:2

+
+ +

output

+

8

+

[0, 0]

+

3::23#out:2

+

3::19#in:1

+
+ +

9

+

3::24#out:1

+

3::25#in:1

+
+ +

10

+

3::23#out:1

+

3::24#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml + + +

[645, 126, 1313, 799]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

on

+

off

+

Deduce

+

simulink-default.rpt

+

6

+

Simulink

+ +

[2, 1]

+

[105, 64, 270, 131]

+

-1

+

1.12

+

on

+

+

TTdiag Copy

+

TTdiag Delete

+

TTdiag Open Simulink

+

off

+ + port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('green');text(0.5, 0.1, 'Checked', 'horizontalAlignment', 'center') + Table Block + + +
+
+ +__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml + + + + +

1

+

[645.0, 126.0, 668.0, 673.0]

+ +

0

+

Left

+

50

+

50

+

9

+

Unset

+
+ +

1

+
+ +

1

+

1

+

SimulinkTopLevel

+

0

+

[630.0, 438.0]

+

1.0

+

[-127.5, -114.5]

+

[-127.5, -114.5, 630.0, 438.0]

+
+ + +

GLUE2:PropertyInspector

+

Property Inspector

+

0

+

+

+

0

+

Right

+

640

+

480

+

Unset

+
+ +

Simulink:Editor:ReferencedFiles

+

Referenced Files

+

0

+

+

{"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"} +

+

0

+

Left

+

640

+

480

+

Unset

+
+
+

AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAApwAAAHzAAAAAQAAAAIAAAABAAAAAvwAAAAA

+ +

167c9499-69fb-4016-9e96-f867813b6e8a

+
+

+

+
+ +__MWOPC_PACKAGE_END__ diff --git a/Examples/ReadabilityExample.mdl.r2010a b/Examples/ReadabilityExample.mdl.r2010a new file mode 100644 index 0000000..6b727d4 --- /dev/null +++ b/Examples/ReadabilityExample.mdl.r2010a @@ -0,0 +1,1216 @@ +Model { + Name "ReadabilityExample" + Version 7.5 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.3" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "UTF-8" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + MaxMDLFileLineLength 120 + Created "Wed Dec 22 13:30:47 2010" + Creator "lawford" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "matthew" + ModifiedDateFormat "%" + LastModifiedDate "Thu May 15 16:34:20 2014" + RTWModifiedTimeStamp 322072433 + ModelVersionFormat "1.%" + ConfigurationManager "None" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 8 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + Cell "UseSpecifiedMinMax" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + Cell "GenerateSLWebview" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 21 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "InsertPolySpaceComments" + Cell "SFDataObjDesc" + Cell "MATLABFcnDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M_T" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "PortableWordSizes" + Cell "PurelyIntegerCode" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "MultiInstanceERTCode" + Cell "SupportNonFinite" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 197, 1080, 827 ] " + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 1 + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Outport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType "S-Function" + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + Block { + BlockType Terminator + } + } + System { + Name "ReadabilityExample" + Location [683, 246, 1311, 741] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 6 + Block { + BlockType SubSystem + Name "f" + SID 1 + Ports [2, 1] + Position [105, 64, 270, 131] + LibraryVersion "1.12" + UserDataPersistent on + UserData "DataTag0" + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5," + " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('green');text(0.5, 0.1, 'Checked', 'horizonta" + "lAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "f" + Location [399, 328, 945, 863] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "x" + SID 4 + Position [35, 38, 65, 52] + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "y" + SID 5 + Position [35, 38, 65, 52] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "code" + SID 3 + Ports [2, 1] + Position [250, 49, 320, 96] + LibraryVersion "1.31" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskDisplay "disp('f');" + MaskSelfModifiable on + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "code" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark 22 + Block { + BlockType Inport + Name "x" + SID 1 + Position [20, 101, 40, 119] + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "y" + SID 18 + Position [20, 136, 40, 154] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID 21 + Ports [1, 1] + Position [270, 230, 320, 270] + Outputs "1" + } + Block { + BlockType "S-Function" + Name " SFunction " + SID 20 + Tag "Stateflow S-Function ReadabilityExample 2" + Ports [2, 2] + Position [180, 100, 230, 160] + FunctionName "sf_sfun" + PortCounts "[2 2]" + EnableBusSupport off + Port { + PortNumber 2 + Name "output" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID 22 + Position [460, 241, 480, 259] + } + Block { + BlockType Outport + Name "output" + SID 19 + Position [460, 101, 480, 119] + IconDisplay "Port number" + } + Line { + SrcBlock "x" + SrcPort 1 + Points [120, 0] + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "y" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "output" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "output" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "output" + SID 6 + Position [35, 53, 65, 67] + IconDisplay "Port number" + } + Line { + SrcBlock "x" + SrcPort 1 + DstBlock "code" + DstPort 1 + } + Line { + SrcBlock "y" + SrcPort 1 + DstBlock "code" + DstPort 2 + } + Line { + SrcBlock "code" + SrcPort 1 + DstBlock "output" + DstPort 1 + } + } + } + } +} +MatData { + NumRecords 1 + DataRecord { + Tag DataTag0 + Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X # + !@ @ ) 4" + " ( 0 ) L ! ( \"0+ %)30 . \\\"L 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . J\"L 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'" + "!E !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F 8 $ 0 \\ % 0 ! " + "& 0 !$ 4 0 !( 5 0 !, 0 0 !0 !@ 0 ! %0 4 ! %@ 8 ! " + " %P !0 ! & !4 ! &0 ! ! &@ $ P $ F (0 $ G (@ $ H " + " %P $ I 0 # 0 \"H A 0 \"L B 0 \"P 7 0 \"T ! , ! " + " +@ \"$ ! +P \"( ! , !< ! ,0 $ P $ R (0 $ S (@ $ T " + " %P $ U 0 # 0 #8 A 0 #< B 0 #@ 7 0 #D " + " " + " . X P !@ @ $ 4 ( 0 0 ! " + " ! ! !X/#TQ#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX P !@ " + " @ $ 4 ( 0 , ! ! P!X/C$ #@ #@ & \" 8 !0 @ ! 0 " + " $ \"0 @ 0 X !( !@ @ - 4 ( !@ $ ! 8 8 W" + "0( ! 0 4 ! #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/" + "PX !0 !@ @ - 4 ( !P $ ! 8 < W0( ! @ 0 & @ " + " . . 8 ( !@ % \" $ ! 0 ) \" ! #@ #@ & \" " + "8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $" + " ! 8 8 W0( ! 0 ( # #@ $@ & \" T !0 @ & 0 $ " + " !@ !@ #= @ $ ! !0 $ . . 8 ( !@ % \" $ ! 0 " + " ) \" / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ " + " ! ! ( . , 8 ( ! % \" $ # 0 0 , >3PP X X !@ @ " + " & 4 ( 0 $ ! D ( \\#\\. , 8 ( ! % \" $ " + " $ 0 0 0 >3T], X X !@ @ & 4 ( 0 $ ! D ( $ " + ". 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ( 0 X " + "X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ " + "% \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 $ " + " \"0 @ #P/PX P !@ @ $ 4 ( 0 , ! ! P!Y/C #@ #@ " + "& \" 8 !0 @ ! 0 $ \"0 @ (0 X !( !@ @ - 4 " + "( !@ $ ! 8 8 W0( ! 0 @ ! #@ #@ & \" 8 !0 @ !" + " 0 $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! D ( " + " \\#\\. . 8 ( !@ % \" $ ! 0 ) \" / _#@ % " + "& \" T !0 @ ( 0 $ !@ \" #= @ $ # !P D * @ X " + "X !@ @ & 4 ( 0 $ ! D ( \"$ . . 8 ( !@ %" + " \" $ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 $ " + " !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 ! 0 &" + " & -T\" 0 $ ( 0 X X !@ @ & 4 ( 0 $ ! D ( " + " \\#\\. . 8 ( !@ % \" $ ! 0 ) \" / _#@ #@ " + "& \" 8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 " + "( !@ $ ! 8 8 W0( ! 0 < \" #@ # & \" 0 !0 @ " + "! P $ $ # '@M>0 . 2 8 ( !@ % \" $ # 0 ) & " + " / _ \\#\\ #P/PX !( !@ @ - 4 ( !@ $ ! 8 8 W0( !" + " 0 8 \" #@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ !" + " !P ( . , 8 ( ! % \" $ # 0 0 , >\"MY X !( !@ @ &" + " 4 ( 0 , ! D 8 \\#\\ #P/P / _#@ $@ & \" T " + " !0 @ & 0 $ !@ !@ #= @ $ ! ! ( . 2 8 ( #0 % " + " \" 8 ! 0 & & -T\" 0 $ ) @ X P !@ @ $ 4 ( " + " 0 , ! ! P!X*GD #@ $@ & \" 8 !0 @ ! P $ \"0 !@ " + " #P/P / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\"" + " 0 $ & @ X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! " + " 0 D \" #@ # & \" 0 !0 @ ! 0 $ $ ! '@ . 2 8 ( " + " !@ % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - " + " 4 ( !@ $ ! 8 8 W0( ! 0 0 \" #@ $@ & \" T " + " !0 @ & 0 $ !@ !@ #= @ $ ! \"@ ( . , 8 ( ! % " + " \" $ # 0 0 , >\"]Y X !( !@ @ & 4 ( 0 , ! D 8 " + " \\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ " + " #= @ $ ! !@ ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" " + " 0 $ * @ X P !@ @ $ 4 ( 0 $ ! ! 0!Y #@ $@ & " + " \" 8 !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 8 8 ( " + " #0 % \" L ! 0 & + -T\" 0 8 # \"P P - #@ \\ " + "$ X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! " + " #@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! \" $ . " + " 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ \" P X !(" + " !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! #@ $@ & " + " \" T !0 @ & 0 $ !@ !@ #= @ $ ! \" $ . , 8 ( " + " ! % \" $ ! 0 0 $ 9@ X P !@ @ $ 4 ( 0 , ! " + " ! P!X+'D #@ )@! & \" ( !0 @ ! 0 $ !0 $ < ! (P '-E= !I" + ";G!U=', 8V]U;G0 ')A;F=E !E>&-E<'0 . . 8 ( !@ % \" $ ! 0 ) \"" + " / _#@ # & \" 8 !0 @ $ \"0 . . 8 ( !" + "@ % \" $ ! 0 ) \" 0(] #@ #@ & \" 8 !0 @ ! " + " 0 $ \"0 @ !90 X X !@ @ & 4 ( 0 $ ! D ( " + " . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #@ & \"" + " 8 !0 @ ! 0 $ \"0 @ X X !@ @ & 4 ( 0" + " $ ! D ( . 4 X 8 ( 0 % \" 8 ! 0 . . " + " 8 ( @ % \" $ 0 % 0 0 $ #@ ,@\" & \" ( !0" + " @ ! 0 $ !0 $ \\ ! AP '!A'1?:&5" + "I9VAT &-O;F1I=&EO;E]T97AT7W@ !C;VYD:71I;VY?=&5X=%]Y 8V]N9&ET:6]N7W1E>'1?;V9F 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X !P(P !@ @ ) 4" + " ( 0 $ C ! ( ! (P %)30 . H\"( 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . 6\"( 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E" + "'1?> !C;VYD:71I;VY?=&5X=%]Y &-" + "O;F1I=&EO;E]T97AT7V]F9G-E= !G X \"8 0 !@ @ \" " + " 4 ( 0 $ ! 4 ! ' 0 \", !S970 :6YP=71S &-O=6YT !R86YG90 97AC97!T " + " #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX P !@ @ & " + " 4 ( ! D #@ #@ & \" 8 !0 @ ! 0 $ " + "\"0 @ $\"/0 X X !@ @ & 4 ( 0 $ ! D ( 64 . " + ". 8 ( !@ % \" $ ! 0 ) \" #@ #@ & \" 8 " + " !0 @ ! 0 $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! " + " D ( . . 8 ( !@ % \" $ ! 0 ) \" " + "#@ % . & \" $ !0 @ & 0 $ #@ #@ & \" ( !0 @ ! " + " $ !0 $ $ ! X !H!0 !@ @ \" 4 ( 0 $ ! 4 ! 6 " + "0 & ! !S=6)G'1?=VED=&@ &-O;F1I=&E" + "O;E]T97AT7VAE:6=H= !C;VYD:71I;VY?=&5X=%]X 8V]N9&ET:6]N7W1E>'1?>0 &-O;F1I=&EO;E]T97AT7V]F9G-E= !G '0 8V]L;W( X P !@ @ " + " & 4 ( ! D #@ # & \" 8 !0 @ $ " + " \"0 . , 8 ( !@ % \" 0 ) X P !@ @ " + "& 4 ( ! D #@ # & \" 8 !0 @ $ " + " \"0 . \" , 8 ( @ % \" $ ! 0 % 0 $ $ \"@ 1W)I9# " + " $=R:60Q !'4.5)\n output = 1;\nelseif(x<4.5)\n ou" + "tput = 0;\nend\n" + editorLayout "100 M4x1[205 227 1080 733]" + } + } + junction { + id 4 + position [23.5747 49.5747 7] + chart 2 + linkNode [2 0 0] + subviewer 2 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 5 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 4 + intersection [7 0 -1 -1 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 2 + linkNode [2 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 2 + drawStyle SMART + executionOrder 1 + ssIdNumber 2 + } + data { + id 6 + ssIdNumber 4 + name "x" + linkNode [2 0 7] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + primitive SF_INT8_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "int8" + } + data { + id 7 + ssIdNumber 5 + name "output" + linkNode [2 6 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 8 + name "type_test/code" + machine 1 + chart 2 + } + target { + id 9 + name "sfun" + description "Default Simulink S-Function Target." + machine 1 + linkNode [1 0 0] + } +} diff --git a/Examples/quadratic_roots.mdl b/Examples/quadratic_roots.mdl new file mode 100644 index 0000000..1d3e177 --- /dev/null +++ b/Examples/quadratic_roots.mdl @@ -0,0 +1,2866 @@ +# MathWorks OPC Text Package +Model { + Version 10.4 + Description "Simulink model saved in R2021b" +} +__MWOPC_PACKAGE_BEGIN__ R2021b +__MWOPC_PART_BEGIN__ /[Content_Types].xml + + + + + + + + + + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /_rels/.rels + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml + + + model + 2011-01-21T19:32:13Z + colin + pesaraamarasekera + 2022-05-05T14:17:31Z + 24.0 + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml + + + application/vnd.mathworks.simulink.model + Simulink Model + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml + + + a92f09b1-8e51-4338-9cb3-194c4b38362b + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml + + + + 9.11.0.1809720 + R2021b + Update 1 + Nov 02 2021 + 3710740051 + + +__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml + + + +

center

+

middle

+
+ + + + + + + + + +

none

+

Inherit: auto

+

off

+
+ +

1

+

on

+

Sample based

+

[]

+

[]

+

Inherit: Inherit from 'Constant value'

+

off

+

inf

+

inf

+

off

+
+ +

4

+

bar

+

off

+
+ +

short

+

10

+

off

+

off

+

-1

+
+ +

1

+

off

+

Port number

+

off

+

[]

+

[]

+

Inherit: auto

+

off

+

off

+

inherit

+

-1

+

Inherit

+

-1

+

auto

+

auto

+

off

+

off

+

on

+
+ +

sin

+

-1

+

auto

+

on

+

-1

+
+ +

1

+

off

+

Port number

+

off

+

[]

+

[]

+

Inherit: auto

+

off

+

off

+

inherit

+

-1

+

Inherit

+

-1

+

auto

+

auto

+

off

+

Dialog

+

held

+

[]

+

off

+

off

+

0

+

on

+
+ +

system

+

''

+

[]

+

auto

+
+ +

Simulink.scopes.TimeScopeBlockCfg

+
+ +

FromPortIcon

+

ReadWrite

+

All

+

off

+

off

+

Sample time

+

-1

+

Auto

+

Auto

+

Auto

+

void_void

+

off

+

off

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

Inherit from model

+

off

+

UseLocalSettings

+

AllNumericTypes

+

UseLocalSettings

+

off

+

off

+

NONE

+

off

+

expression

+

update diagram

+

off

+

off

+

on

+

off

+

off

+

off

+

0

+

off

+

off

+
+ +

round

+

++

+

All dimensions

+

1

+

off

+

Inherit: Inherit via internal rule

+

[]

+

[]

+

Inherit: Inherit via internal rule

+

off

+

Floor

+

off

+

-1

+
+ +
+
+ +__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64 +AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAAD4PgAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA +AMg+AAABAAAAAAAAAAIAAADIPgAAAAFJTQAAAAAOAAAAKD4AAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAA4D0AAAYAAAAI +AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAKA9 +AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAB5AAAAAQAAAAEAAAAAAAAADgAAALgLAAAGAAAACAAA +AAkAAAAAAAAABQAAAAgAAACICwAAAQAAAAEAAAAAAAAAAgAAAIgLAAADAAAALAAAANgBAAA4AgAA +OAIAAJAEAADACgAAiAsAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf +aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs +bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl +bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0 +X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90 +ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH +cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv +bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA +AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAYAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAXAAAABAAA +AAAAAAAAAAAAAAAAAAMAAAAPAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAADAAAAAQAAAAAAAAAAAAAA +AAAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAO +AAAAAQAAAAAAAAAAAAAAAAAAAAgAAAANAAAAAgAAAAAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAAAA +AAAAAAAAAAAAAAoAAAALAAAAAgAAAAAAAAAAAAAAAAAAAAsAAAAKAAAAAQAAAAAAAAAAAAAAAAAA +AAwAAAAJAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA4AAAAIAAAA +AQAAAAAAAAAAAAAAAAAAAA8AAAAHAAAAAgAAAAAAAAAAAAAAAAAAABAAAAAFAAAAAgAAAAAAAAAA +AAAAAAAAABEAAAAGAAAABAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABAAAAAAAAAAAAAAAAAAAABMA +AAARAAAABAAAAAAAAAAAAAAAAAAAABQAAAASAAAABAAAAAAAAAAAAAAAAAAAABUAAAATAAAABAAA +AAAAAAAAAAAAAAAAABYAAAAUAAAABAAAAAAAAAAAAAAAAAAAABcAAAAVAAAABAAAAAAAAAAAAAAA +AAAAABgAAAAWAAAAAAAAAAAAAAAJAAAAAQAAAAEAAABsAAAAHwAAAAEAAABtAAAAIAAAAAEAAABu +AAAAJQAAAAEAAABvAAAAJgAAAAEAAABwAAAAJwAAAAEAAABxAAAAKAAAAAEAAAByAAAAKQAAAAEA +AABzAAAAKgAAAAEAAAB0AAAAAwAAAAIAAAABAAAAaQAAAB8AAAABAAAAagAAACAAAAABAAAAawAA +AAQAAAADAAAAAQAAAAwAAAAhAAAAAQAAAEoAAAAiAAAAAQAAAEsAAAAXAAAAAQAAAEwAAAAAAAAA +BAAAAAQAAAABAAAAAAAAAAUAAAABAAAAAQAAAAYAAAABAAAACgAAABAAAAABAAAACwAAAAAAAAAE +AAAABwAAAAEAAAAGAAAACwAAAAEAAAAHAAAADAAAAAEAAAAIAAAADQAAAAEAAAAJAAAAAAAAAAQA +AAAEAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAGAAAAAQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABgAA +AAQAAAABAAAADQAAAAUAAAABAAAADgAAAAYAAAABAAAARgAAABQAAAABAAAARwAAABUAAAABAAAA +SAAAABAAAAABAAAASQAAAAAAAAAFAAAACQAAAAEAAABBAAAABwAAAAEAAABCAAAACwAAAAEAAABD +AAAADAAAAAEAAABEAAAADQAAAAEAAABFAAAABgAAABIAAAABAAAADwAAAAQAAAABAAAAEAAAAAUA +AAABAAAAEQAAAAYAAAABAAAAPgAAABQAAAABAAAAPwAAABUAAAABAAAAQAAAAAAAAAAEAAAABwAA +AAEAAAA6AAAACwAAAAEAAAA7AAAADAAAAAEAAAA8AAAADQAAAAEAAAA9AAAAAAAAAAYAAAASAAAA +AQAAADQAAAAEAAAAAQAAADUAAAAFAAAAAQAAADYAAAAGAAAAAQAAADcAAAAUAAAAAQAAADgAAAAV +AAAAAQAAADkAAAAAAAAABQAAAAkAAAABAAAAEgAAAAcAAAABAAAAMAAAAAsAAAABAAAAMQAAAAwA +AAABAAAAMgAAAA0AAAABAAAAMwAAAAYAAAAEAAAAAQAAABMAAAAFAAAAAQAAABQAAAAGAAAAAQAA +ABUAAAAUAAAAAQAAABYAAAAVAAAAAQAAABcAAAAQAAAAAQAAABgAAAAAAAAABgAAABIAAAABAAAA +KgAAAAQAAAABAAAAKwAAAAUAAAABAAAALAAAAAYAAAABAAAALQAAABQAAAABAAAALgAAABUAAAAB +AAAALwAAAAAAAAAFAAAACQAAAAEAAAAZAAAABwAAAAEAAAAmAAAACwAAAAEAAAAnAAAADAAAAAEA +AAAoAAAADQAAAAEAAAApAAAABgAAAAQAAAABAAAAGgAAAAUAAAABAAAAGwAAAAYAAAABAAAAHAAA +ABQAAAABAAAAHQAAABUAAAABAAAAHgAAABAAAAABAAAAHwAAAAAAAAAGAAAABAAAAAEAAAAgAAAA +BQAAAAEAAAAhAAAABgAAAAEAAAAiAAAAFAAAAAEAAAAjAAAAFQAAAAEAAAAkAAAAEAAAAAEAAAAl +AAAAAAAAAAQAAAADAAAAAQAAAE0AAAAhAAAAAQAAAE4AAAAiAAAAAQAAAE8AAAAXAAAAAQAAAFAA +AAAAAAAABAAAAAMAAAABAAAAUQAAACEAAAABAAAAUgAAACIAAAABAAAAUwAAABcAAAABAAAAVAAA +AAAAAAAEAAAAAwAAAAEAAABVAAAAIQAAAAEAAABWAAAAIgAAAAEAAABXAAAAFwAAAAEAAABYAAAA +AAAAAAQAAAADAAAAAQAAAFkAAAAhAAAAAQAAAFoAAAAiAAAAAQAAAFsAAAAXAAAAAQAAAFwAAAAA +AAAABAAAAAMAAAABAAAAXQAAACEAAAABAAAAXgAAACIAAAABAAAAXwAAABcAAAABAAAAYAAAAAAA +AAAEAAAAAwAAAAEAAABhAAAAIQAAAAEAAABiAAAAIgAAAAEAAABjAAAAFwAAAAEAAABkAAAAAAAA +AAQAAAADAAAAAQAAAGUAAAAhAAAAAQAAAGYAAAAiAAAAAQAAAGcAAAAXAAAAAQAAAGgAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAA +AAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAAABAAAgB4MQAADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAAABAAAgB4MgAADgAAADgAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAA +BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB +AAAAAQAAAAUAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABwAA +AAEAAAABAAAAAAAAAAYAAAAcAAAAAAAA3QIAAAABAAAAAgAAAAQAAAAGAAAAAgAAAAAAAAAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AABADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA +AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA +BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA +CAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGIgfj0gMAAADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AAgAAAABAAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAA +EAAAAAYAAABhID09IDAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAALAAAAAgAAAA4AAABIAAAABgAA +AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABIAAAABAAAAAAAAABAAAAASAAAAKGJeMikgLSA0KmEq +YyA9PSAwAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA +AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAwAAAABAAAADgAAADgAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8O +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA +ABgAAAAAAADdAgAAAAEAAAABAAAADgAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA +CAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAYj49MA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAAAQAA +AA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA +AAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ +AAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA +AAMAAAABAAAAAAAAABAAAwBiPDAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAA8AAAABAAAADgAAADgA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADw +Pw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA +AAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ +AAAACAAAAAAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAAAAEA +AAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAAEAAAABEAAAACAAAAAAAAAA4AAAA4AAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +AABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA +AAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA +AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAAAQAAAA4AAABIAAAA +BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABEAAAABAAAAAAAAABAAAAARAAAAKGJeMikgLSA0 +KmEqYyA+IDAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA +AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAwAAAABAAAADgAAADgAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +BEAOAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAA +AAAAAN0CAAAAAQAAAAIAAAANAAAADgAAAAIAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA +AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAwAAAABAAAADgAAADgAAAAGAAAACAAAAAQAAAAA +AAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAABhIH49IDAAAA4AAAA4AAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAA +AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA +AQAAAAEAAAAKAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABBADgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAACQAAAAsAAAACAAAA +AAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA +AAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAK +AAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAJAAAACAAAAAAAAAAAAPg/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA +AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAIAAAAOAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AAAHAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAIAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAACAAAA +DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAC1jL2IO +AAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAA +AAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA +AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAA +CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB +AAAADQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAA +AAAQAAAABgAAAC1iLzIqYQAADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAA +AAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAA +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 +dXNoX3dpZHRoAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA +AAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAA +AAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAGlADgAAADgAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABOQA4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +JEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA +AAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +CQAAAAgAAAAAAAAAAAA0QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB +AAAAAAAAAAkAAAAIAAAAAAAAAAAAPkAOAAAA+AAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAFAAQABgAAAAEAAAASAAAAQ2VsbHMAR3JpZDEAR3JpZDIAAAAAAAAADgAA +ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA +MAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAw +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAJAB +AAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAwAAAABAAAAPAAA +AENlbGwxAAAAAAAAAENlbGwyAAAAAAAAAHJlc3VsdAAAAAAAAHJlc3VsdF90ZXh0AGNvbG9yAAAA +AAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ +AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkA +AAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAA +AAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAA +AAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA +AAAADgAAAAgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAA +AAABAAAAoAAAAEdyaWQwAAAAAAAAAAAAAABHcmlkMQAAAAAAAAAAAAAAR3JpZDIAAAAAAAAAAAAA +AGZ1bmN0aW9uX25hbWUAAABmdW5jdGlvbl9pbnB1dHMAc2V0dGluZ3MAAAAAAAAAAGNoZWNrZWQA +AAAAAAAAAABvcGVuAAAAAAAAAAAAAAAAZmlnAAAAAAAAAAAAAAAAAG11bHRpX21vZGUAAAAAAAAO +AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A +AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA +ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA +MAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAw +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACIAAAABgAA +AAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAAAFgAAAABAAAAAAAAAAIAAABYAAAAAAFJTQAAAAAOAAAA +SAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAF +AAAATUNPUwAAAAAOAAAAAAAAAA +__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_38.mxarray BASE64 +AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAABISQAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA +ABhJAAABAAAAAAAAAAIAAAAYSQAAAAFJTQAAAAAOAAAAeEgAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAMEgAAAYAAAAI +AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAPBH +AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAACVAAAAAQAAAAEAAAAAAAAADgAAAPgNAAAGAAAACAAA +AAkAAAAAAAAABQAAAAgAAADIDQAAAQAAAAEAAAAAAAAAAgAAAMgNAAADAAAALAAAANgBAAA4AgAA +OAIAACAFAADQDAAAyA0AAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf +aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs +bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl +bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0 +X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90 +ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH +cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv +bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA +AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAeAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAdAAAABAAA +AAAAAAAAAAAAAAAAAAMAAAARAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAADAAAAAQAAAAAAAAAAAAAA +AAAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAQ +AAAAAQAAAAAAAAAAAAAAAAAAAAgAAAAPAAAAAgAAAAAAAAAAAAAAAAAAAAkAAAANAAAAAQAAAAAA +AAAAAAAAAAAAAAoAAAAMAAAAAgAAAAAAAAAAAAAAAAAAAAsAAAALAAAAAQAAAAAAAAAAAAAAAAAA +AAwAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA4AAAAFAAAA +AgAAAAAAAAAAAAAAAAAAAA8AAAAJAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAIAAAAAgAAAAAAAAAA +AAAAAAAAABEAAAAGAAAAAgAAAAAAAAAAAAAAAAAAABIAAAAHAAAAAgAAAAAAAAAAAAAAAAAAABMA +AAAOAAAABAAAAAAAAAAAAAAAAAAAABQAAAASAAAABAAAAAAAAAAAAAAAAAAAABUAAAATAAAABAAA +AAAAAAAAAAAAAAAAABYAAAAUAAAABAAAAAAAAAAAAAAAAAAAABcAAAAVAAAABAAAAAAAAAAAAAAA +AAAAABgAAAAWAAAABAAAAAAAAAAAAAAAAAAAABkAAAAXAAAABAAAAAAAAAAAAAAAAAAAABoAAAAY +AAAABAAAAAAAAAAAAAAAAAAAABsAAAAZAAAABAAAAAAAAAAAAAAAAAAAABwAAAAaAAAABAAAAAAA +AAAAAAAAAAAAAB0AAAAbAAAABAAAAAAAAAAAAAAAAAAAAB4AAAAcAAAAAAAAAAAAAAAJAAAAAQAA +AAEAAACIAAAAHwAAAAEAAACJAAAAIAAAAAEAAACKAAAAJQAAAAEAAACLAAAAJgAAAAEAAACMAAAA +JwAAAAEAAACNAAAAKAAAAAEAAACOAAAAKQAAAAEAAACPAAAAKgAAAAEAAACQAAAAAwAAAAIAAAAB +AAAAhQAAAB8AAAABAAAAhgAAACAAAAABAAAAhwAAAAQAAAADAAAAAQAAAAwAAAAhAAAAAQAAAFYA +AAAiAAAAAQAAAFcAAAAXAAAAAQAAAFgAAAAAAAAABAAAAAQAAAABAAAAAAAAAAUAAAABAAAAAQAA +AAYAAAABAAAACgAAABAAAAABAAAACwAAAAAAAAAEAAAABwAAAAEAAAAGAAAACwAAAAEAAAAHAAAA +DAAAAAEAAAAIAAAADQAAAAEAAAAJAAAAAAAAAAQAAAAEAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAG +AAAAAQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABgAAAAQAAAABAAAADQAAAAUAAAABAAAADgAAAAYA +AAABAAAAUgAAABQAAAABAAAAUwAAABUAAAABAAAAVAAAABAAAAABAAAAVQAAAAAAAAAFAAAACQAA +AAEAAABHAAAABwAAAAEAAABOAAAACwAAAAEAAABPAAAADAAAAAEAAABQAAAADQAAAAEAAABRAAAA +BgAAABIAAAABAAAADwAAAAQAAAABAAAAEAAAAAUAAAABAAAAEQAAAAYAAAABAAAARAAAABQAAAAB +AAAARQAAABUAAAABAAAARgAAAAAAAAAEAAAABwAAAAEAAABAAAAACwAAAAEAAABBAAAADAAAAAEA +AABCAAAADQAAAAEAAABDAAAAAAAAAAYAAAASAAAAAQAAADoAAAAEAAAAAQAAADsAAAAFAAAAAQAA +ADwAAAAGAAAAAQAAAD0AAAAUAAAAAQAAAD4AAAAVAAAAAQAAAD8AAAAAAAAABQAAAAkAAAABAAAA +EgAAAAcAAAABAAAANgAAAAsAAAABAAAANwAAAAwAAAABAAAAOAAAAA0AAAABAAAAOQAAAAYAAAAE +AAAAAQAAABMAAAAFAAAAAQAAABQAAAAGAAAAAQAAABUAAAAUAAAAAQAAABYAAAAVAAAAAQAAABcA +AAAQAAAAAQAAABgAAAAAAAAABgAAAAQAAAABAAAAGQAAAAUAAAABAAAAGgAAAAYAAAABAAAAGwAA +ABQAAAABAAAAHAAAABUAAAABAAAAHQAAABAAAAABAAAAHgAAAAAAAAAGAAAAEgAAAAEAAAAwAAAA +BAAAAAEAAAAxAAAABQAAAAEAAAAyAAAABgAAAAEAAAAzAAAAFAAAAAEAAAA0AAAAFQAAAAEAAAA1 +AAAAAAAAAAUAAAAJAAAAAQAAAB8AAAAHAAAAAQAAACwAAAALAAAAAQAAAC0AAAAMAAAAAQAAAC4A +AAANAAAAAQAAAC8AAAAGAAAABAAAAAEAAAAgAAAABQAAAAEAAAAhAAAABgAAAAEAAAAiAAAAFAAA +AAEAAAAjAAAAFQAAAAEAAAAkAAAAEAAAAAEAAAAlAAAAAAAAAAYAAAAEAAAAAQAAACYAAAAFAAAA +AQAAACcAAAAGAAAAAQAAACgAAAAUAAAAAQAAACkAAAAVAAAAAQAAACoAAAAQAAAAAQAAACsAAAAA +AAAABgAAAAQAAAABAAAASAAAAAUAAAABAAAASQAAAAYAAAABAAAASgAAABQAAAABAAAASwAAABUA +AAABAAAATAAAABAAAAABAAAATQAAAAAAAAAEAAAAAwAAAAEAAABZAAAAIQAAAAEAAABaAAAAIgAA +AAEAAABbAAAAFwAAAAEAAABcAAAAAAAAAAQAAAADAAAAAQAAAF0AAAAhAAAAAQAAAF4AAAAiAAAA +AQAAAF8AAAAXAAAAAQAAAGAAAAAAAAAABAAAAAMAAAABAAAAYQAAACEAAAABAAAAYgAAACIAAAAB +AAAAYwAAABcAAAABAAAAZAAAAAAAAAAEAAAAAwAAAAEAAABlAAAAIQAAAAEAAABmAAAAIgAAAAEA +AABnAAAAFwAAAAEAAABoAAAAAAAAAAQAAAADAAAAAQAAAGkAAAAhAAAAAQAAAGoAAAAiAAAAAQAA +AGsAAAAXAAAAAQAAAGwAAAAAAAAABAAAAAMAAAABAAAAbQAAACEAAAABAAAAbgAAACIAAAABAAAA +bwAAABcAAAABAAAAcAAAAAAAAAAEAAAAAwAAAAEAAABxAAAAIQAAAAEAAAByAAAAIgAAAAEAAABz +AAAAFwAAAAEAAAB0AAAAAAAAAAQAAAADAAAAAQAAAHUAAAAhAAAAAQAAAHYAAAAiAAAAAQAAAHcA +AAAXAAAAAQAAAHgAAAAAAAAABAAAAAMAAAABAAAAeQAAACEAAAABAAAAegAAACIAAAABAAAAewAA +ABcAAAABAAAAfAAAAAAAAAAEAAAAAwAAAAEAAAB9AAAAIQAAAAEAAAB+AAAAIgAAAAEAAAB/AAAA +FwAAAAEAAACAAAAAAAAAAAQAAAADAAAAAQAAAIEAAAAhAAAAAQAAAIIAAAAiAAAAAQAAAIMAAAAX +AAAAAQAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA4AAABAAAAABgAAAAgA +AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAeDE6c2luZ2xlAAAAAAAA +AA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA +AAAAAAAA8D8OAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQ +AAAACQAAAHgyOnNpbmdsZQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +APA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwA +AAAAAADdAgAAAAEAAAACAAAABAAAAAYAAAACAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAG +AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA +AAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA +AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA +AAAEAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAA +ABAAAAAGAAAAYiB+PSAwAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA +AQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAEAAAAOAAAAOAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGEgPT0gMAAADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAAAsAAAACAAAADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAAEgAAAAEAAAAAAAAAEAAAABIAAAAoYipiKSAtIDQqYSpjID09IDAAAAAAAAAOAAAAOAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/ +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAADAAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA +AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAI +AAAABAAAAAAAAAAFAAAACAAAAAEAAAARAAAAAQAAAAAAAAAQAAAAEQAAAChiKmIpIC0gNCphKmMg +PCAwAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAMAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAAA8AAAACAAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAABiID49IDAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAQ +AAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI +AAAAAQAAAAUAAAABAAAAAAAAABAAAAAFAAAAYiA8IDAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAA +AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA +EAAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ +AAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA +AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAQAAAAIAAAARAAAAEgAAAAIAAAAA +AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAACEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAAN +AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABAA +AAABAAAADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAEQAAAAEAAAAAAAAAEAAA +ABEAAAAoYipiKSAtIDQqYSpjID4gMAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAhADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADAAAAAEA +AAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA +AAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +CQAAAAgAAAAAAAAAAAAEQA4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAACAAAAAEAAAAB +AAAAAAAAAAYAAAAgAAAAAAAA3QIAAAABAAAAAwAAAA0AAAAOAAAADwAAAAIAAAAOAAAAOAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAhADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAAAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA +AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADAAAAAEAAAAOAAAAOAAA +AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGEgfj0gMAAA +DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA +AAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA +AAAYAAAAAAAA3QIAAAABAAAAAQAAAAoAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA +AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAFEAOAAAAUAAAAAYAAAAI +AAAADQAAAAAAAAAFAAAACAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAQAAAAIA +AAAJAAAACwAAAAIAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAAAA4A +AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA +3QIAAAABAAAAAQAAAAoAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAABEAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAgAA +AA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAAABAAAAAGAAAA +YiA9PSAwAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ +AAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAA +AAAAAN0CAAAAAQAAAAIAAAAHAAAAEwAAAAIAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA +AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/ +DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA +AADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA +AAAEAAAAAQAAAAAAAAAQAAQALWMvYg4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA +AAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAA +CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB +AAAABAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA +AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAATAAAAAgAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAA +AAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBOYU4ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8O +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAAEAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA +AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAA0AAAACAAAADgAAADgAAAAGAAAA +CAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAAAtYi8yKmEAAA4AAABI +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA +8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA +AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAIAAAAOAAAASAAAAAYAAAAIAAAA +DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAO +AAAAAgAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAA +AwBOYU4ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAA +ABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA +CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAAAgAAAA4AAABI +AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA +AAABAAAAAQAAABEAAAACAAAADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHgAA +AAEAAAAAAAAAEAAAAB4AAAAoLWIgLSBzcXJ0KGIqYiAtIDQqYSpjKSkgLyAyKmEAAA4AAABIAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8A +AAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA +AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAA +AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAASAAAA +AgAAAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB4AAAABAAAAAAAAABAAAAAe +AAAAKC1iICsgc3FydChiKmIgLSA0KmEqYykpIC8gMiphAAAOAAAASAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADw +Pw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAAMAAAAAYA +AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMATmFOAA4AAABIAAAABgAA +AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAA +AADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA +AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABgAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAATAAAAAgAA +AA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBOYU4A +DgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAA +AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAGAAAAAgAAAA4AAABIAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA +AQAAAA0AAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAA +AAAAEAADAE5hTgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAA +AAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAYAAAACAAAA +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 +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAA +DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAAGlADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA +AAgAAAAAAAAAAABOQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAAJEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB +AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA +AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAA0QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAPkAOAAAA+AAAAAYAAAAIAAAA +AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABgAAAAEAAAASAAAAQ2VsbHMAR3Jp +ZDEAR3JpZDIAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA +AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA +AAAAAAkAAAAAAAAADgAAAJABAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAABQAEAAwAAAABAAAAPAAAAENlbGwxAAAAAAAAAENlbGwyAAAAAAAAAHJlc3VsdAAAAAAAAHJl +c3VsdF90ZXh0AGNvbG9yAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA +AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAA +AAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAAgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAABQAEABAAAAABAAAAoAAAAEdyaWQwAAAAAAAAAAAAAABHcmlkMQAAAAAAAAAA +AAAAR3JpZDIAAAAAAAAAAAAAAGZ1bmN0aW9uX25hbWUAAABmdW5jdGlvbl9pbnB1dHMAc2V0dGlu +Z3MAAAAAAAAAAGNoZWNrZWQAAAAAAAAAAABvcGVuAAAAAAAAAAAAAAAAZmlnAAAAAAAAAAAAAAAA +AG11bHRpX21vZGUAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAA +AQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB +AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA +AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA +AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA +AAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA +AAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA +AAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA +CQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ +AAAAAAAAAA4AAACIAAAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAAAFgAAAABAAAAAAAAAAIA +AABYAAAAAAFJTQAAAAAOAAAASAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAAAAAAA +__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml + + + +

05765f89-bb6f-43d7-b675-5de03ebe80a7

+

maci64

+ +

%<Auto>

+

%<Auto>

+

573581337

+

%<AutoIncrement:24.0>

+
+ +

none

+
+ +

normal

+ +

$bdroot

+ + $bdroot + + + + +
+
+ +

warning

+
+ + +

Ensure deterministic transfer (maximum delay)

+

Ensure data integrity only

+

Ensure deterministic transfer (minimum delay)

+

None

+
+
+ +
+
+ +__MWOPC_PART_BEGIN__ /simulink/configSet0.xml + + + +

[]

+

+ + +

[]

+

+

[]

+

0.0

+

10.0

+

auto

+

on

+

auto

+

auto

+

5

+

auto

+

10*128*eps

+

1000

+

4

+

1

+

auto

+

auto

+

1

+

1e-3

+

on

+

off

+

off

+

VariableStepDiscrete

+

auto

+

auto

+

DisableAll

+

UseLocalSettings

+

Nonadaptive

+

TrustRegion

+

off

+

off

+

Fast

+

off

+

off

+

Unconstrained

+

Whenever possible

+

[]

+

off

+

off

+

ode3

+
+ +

[]

+

+

[]

+

1

+

[t, u]

+

xFinal

+

xInitial

+

on

+

1000

+

off

+

off

+

off

+

off

+

Array

+

ModelDataLogs

+

on

+

off

+

on

+

on

+

off

+

on

+

off

+

streamout

+

on

+

off

+

xout

+

tout

+

yout

+

logsout

+

dsmout

+

RefineOutputTimes

+

[]

+

out

+

1

+

off

+

timeseries

+

out.mat

+

[-inf, inf]

+
+ + + BooleansAsBitfields + PassReuseOutputArgsAs + PassReuseOutputArgsThreshold + ZeroExternalMemoryAtStartup + ZeroInternalMemoryAtStartup + OptimizeModelRefInitCode + NoFixptDivByZeroProtection + UseSpecifiedMinMax + EfficientTunableParamExpr + +

+

[]

+

on

+

on

+

on

+

Tunable

+

off

+

off

+

off

+

off

+

double

+

off

+

off

+

on

+

on

+

off

+

off

+

on

+

off

+

+

on

+

off

+

uint_T

+

Same as modeled

+

on

+

64

+

Structure reference

+

12

+

2147483647

+

on

+

5

+

off

+

off

+

Native Integer

+

on

+

on

+

off

+

off

+

off

+

on

+

inf

+

Inherit from target

+

on

+

off

+

off

+

off

+

on

+

on

+

off

+

off

+

level2

+

Balanced

+

on

+

off

+

off

+

GradualUnderflow

+

off

+
+ + + UseOnlyExistingSharedCode + +

+

[]

+

error

+

none

+

none

+

none

+

error

+

none

+

UseLocalSettings

+

UseLocalSettings

+

UseLocalSettings

+

warning

+

warning

+

warning

+

warning

+

on

+

Classic

+

none

+

off

+

UseLocalSettings

+

warning

+

warning

+

none

+

error

+

warning

+

warning

+

warning

+

warning

+

error

+

error

+

error

+

none

+

warning

+

none

+

warning

+

none

+

warning

+

warning

+

error

+

error

+

none

+

warning

+

warning

+

none

+

none

+

none

+

none

+

none

+

none

+

warning

+

none

+

warning

+

warning

+

warning

+

error

+

none

+

error

+

none

+

warning

+

warning

+

UseLocalSettings

+

on

+

off

+

none

+

error

+

none

+

none

+

warning

+

warning

+

none

+

warning

+

error

+

warning

+

warning

+

error

+

none

+

warning

+

none

+

warning

+

ErrorLevel1

+

WarnAndRepair

+

none

+

warning

+

warning

+

error

+

error

+

none

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

warning

+

error

+

warning

+

warning

+

none

+

warning

+

warning

+

all

+

warning

+

on

+

warning

+

warning

+

off

+

+

none

+

off

+

warning

+

none

+
+ +

[]

+

+

[]

+

8

+

16

+

32

+

32

+

64

+

32

+

64

+

32

+

32

+

32

+

Char

+

None

+

Undefined

+

Unspecified

+

32

+

on

+

off

+

32-bit Generic

+

8

+

16

+

32

+

32

+

64

+

32

+

64

+

32

+

32

+

32

+

Char

+

None

+

on

+

off

+

Undefined

+

Unspecified

+

32

+

32

+

32

+

Specified

+

off

+

on

+

on

+

on

+

EmbeddedCoderHSP

+
+ +

[]

+

+

[]

+

IfOutOfDateOrStructuralChange

+

on

+

error

+

off

+

on

+

None

+

Multi

+

Infer from blocks in model

+

+

on

+

off

+

off

+

off

+
+ +

[]

+

+

[]

+

+

+

+

+

[]

+

+

+

+

+

+

+

on

+

on

+

on

+

off

+

off

+

off

+

off

+

off

+

on

+

50

+

on

+

on

+

on

+

65536

+

off

+

[]

+

NotSpecified

+

UseInterfaceOnly

+

off

+

None

+

+

generic

+

C

+

off

+

200

+

1024

+

off

+

+

+

mkl-dnn

+

on

+
+ + + IncludeHyperlinkInReport + GenerateTraceInfo + GenerateTraceReport + GenerateTraceReportSl + GenerateTraceReportSf + GenerateTraceReportEml + PortableWordSizes + GenerateWebview + GenerateCodeMetricsReport + GenerateCodeReplacementReport + GenerateMissedCodeReplacementReport + GenerateErtSFunction + CreateSILPILBlock + CodeExecutionProfiling + CodeProfilingSaveOptions + CodeProfilingInstrumentation + CodeStackProfiling + +

+

grt.tlc

+

None

+

off

+

off

+

+

off

+

make_rtw

+

on

+

off

+

+

grt_default_tmf

+

+

off

+

on

+

off

+

[]

+

off

+

off

+

off

+

off

+

off

+

off

+

+

+

+

+

+

+

+

+

+

+

+

Automatically locate an installed toolchain

+

Faster Builds

+

[]

+

off

+

off

+

off

+

None

+

off

+

executionProfile

+

SummaryOnly

+

off

+

off

+

C

+

None

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

[]

+

+

Off

+

1024

+

+

-1

+

discrete

+

200

+

off

+

1024

+

on

+

on

+

on

+

off

+

3.5

+

+

+

0

+

none

+

on

+

19.05

+

unspecified

+ + + + IgnoreCustomStorageClasses + IgnoreTestpoints + InsertBlockDesc + SFDataObjDesc + SimulinkDataObjDesc + DefineNamingRule + SignalNamingRule + ParamNamingRule + InlinedPrmAccess + CustomSymbolStr + CustomSymbolStrGlobalVar + CustomSymbolStrType + CustomSymbolStrField + CustomSymbolStrFcn + CustomSymbolStrFcnArg + CustomSymbolStrBlkIO + CustomSymbolStrTmpVar + CustomSymbolStrMacro + ReqsInCode + BlockCommentType + InsertPolySpaceComments + MATLABFcnDesc + InternalIdentifier + CustomSymbolStrModelFcn + CustomSymbolStrUtil + CustomSymbolStrEmxType + CustomSymbolStrEmxFcn + CustomUserTokenString + +

+

[]

+

+

off

+

on

+

Auto

+

on

+

off

+

31

+

off

+

off

+

off

+

off

+

off

+

off

+

off

+

1

+

8

+

$R$N$M

+

$N$R$M_T

+

$N$M

+

$R$N$M$F

+

$R$N

+

rt$I$N$M

+

rtb_$N$M

+

$N$M

+

$R$N$M

+

$N$C

+

emxArray_$M$N

+

emx$M$N

+

+

+

None

+

+

None

+

+

None

+

+

off

+

off

+

on

+

BlockPathComment

+

on

+

off

+

off

+

+

Shortened

+

Literals

+

off

+

off

+

[]

+

error

+
+ + + GeneratePreprocessorConditionals + IncludeMdlTerminateFcn + RemoveResetFunc + SuppressErrorStatus + ERTCustomFileBanners + GenerateSampleERTMain + GenerateTestInterfaces + ModelStepFunctionPrototypeControlCompliant + CPPClassGenCompliant + PreserveStateflowLocalDataDimensions + PurelyIntegerCode + PortableWordSizes + SupportComplex + SupportAbsoluteTime + SupportContinuousTime + SupportNonInlinedSFcns + GenerateAllocFcn + ExistingSharedCode + ParenthesesLevel + ERTMultiwordTypeDef + MultiwordTypeDef + RemoveDisableFunc + +

+

[]

+

ansi_tfl_table_tmw.mat

+

+

+

NOT IN USE

+

C89/C90 (ANSI)

+

None

+

Auto

+

System defined

+

2048

+

256

+

on

+

off

+

+

off

+

off

+

on

+

on

+

on

+

on

+

on

+

off

+

off

+

off

+

off

+

Auto

+

off

+

on

+

rt_

+

on

+

Nonreusable function

+

off

+

on

+

on

+

on

+

on

+

off

+

off

+

off

+

Nominal

+

Nominal

+

Simulink.SoftwareTarget.GRTCustomization

+

off

+

on

+

off

+

off

+

on

+

off

+

on

+

on

+

[]

+

[]

+

1,2,3,4,...

+

Size,Breakpoints,Table

+

Size,Breakpoints,Table

+

Column-major

+

error

+

$R$E

+

$R$E

+

$R_data

+ + None + +

off

+

off

+

off

+

off

+

1000000

+

0

+

ext_comm

+

+

Level1

+

off

+

off

+

off

+

off

+

off

+

Error

+
+
+
+ +

[]

+

Simulink Coverage Configuration Component

+

[]

+

Simulink Coverage

+

off

+

EntireSystem

+

on

+

off

+

/

+

covdata

+

+

dw

+

+

+

off

+

on

+

on

+

on

+

on

+

covCumulativeData

+

off

+

on

+

slcov_output/$ModelName$

+

$ModelName$_cvdata

+

on

+

off

+

+

off

+

on

+

1e-05

+

0.01

+

off

+

0

+

0

+

Masking

+
+
+

Configuration

+

Solver

+

[ 200, 74, 1080, 704 ]

+

+

+
+ +__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml + + + Configuration + + +__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml + + +

0

+

0

+

+

0

+

0

+

0

+

0

+

0

+

0

+

0

+

Unset

+

0

+

Simulink

+

0

+

0

+

1

+
+ +__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml + + + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml + + + + HighNumberLast + + true + + + + + false + Default + -2147483648 + + + true + + false + 1 + true + FiM + 40 + + FiM + -2139062017 + true + ZOHContinuous01 + + 1.0 + 0.0 + + 0 + + + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml + + + + + + 40 + + #808080 + true + [0, 1] + FiM + + FiM + base + + + FiM + + + + Default + + + + + + 0,0 + 0,0,0,0 + + FiM + base + + 0,0 + + FiM + graph.Graph + + + + Default + graph.Graph + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels + + + + + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_10.xml + + +

quad_fcn_fp/code

+

[293 257 161 328]

+

[0 156.75 0 153.75]

+

[1 1 1280 778 1.25]

+

10

+

LIBRARY_TOOLBAR

+

8

+

CLUSTER_CHART

+

EML_CHART

+

1

+

1

+ +

quad_fcn_fp

+
+ + +

eML_blk_kernel()

+

[18 64.5 118 66]

+

12

+

SUBCHART

+

10

+

FUNC_STATE

+

CLUSTER_STATE

+ +

1

+

function [x1,x2] = quad_fcn_fp(a,b,c) +%%#eml +x1=-c/b; +x2=NaN; +if(a == 0) + if(b ~= 0) + x1 = -c/b; + x2 = NaN; + elseif(b == 0) + x1 = NaN; + x2 = NaN; + end +elseif(a ~= 0) + if((b*b) - 4*a*c == 0) + x1 = -b/2*a; + x2 = NaN; + elseif((b*b) - 4*a*c < 0) + x1 = NaN; + x2 = NaN; + elseif((b*b) - 4*a*c > 0) + if(b >= 0) + x1 = (-b - sqrt(b*b - 4*a*c)) / 2*a; + x2 = c / (a* ((-b - sqrt(b*b - 4*a*c)) / 2*a)); + elseif(b < 0) + x1 = (-b + sqrt(b*b - 4*a*c)) / 2*a; + x2 = c / (a* ((-b + sqrt(b*b - 4*a*c)) / 2*a)); + end + end +end +

+

Matrix(4,1) +[205.0, 227.0, 1080.0, 733.0]

+

1

+
+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

OUTPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

OUTPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

{eML_blk_kernel();}

+

[32.125 19.875 102.544 14.964]

+

12

+ +

[0 0 1 0 23.5747 14.625 0 0]

+
+ +

3

+

[1 0 -1 0 23.5747 42.5747 0 0]

+
+

[23.5747 24.9468]

+

[23.575 23.575 14.625 34.575]

+

10

+

SMART

+ +

BOTH_STICK

+
+

1

+
+ +

[23.5747 49.5747 7]

+

10

+

CONNECTIVE_JUNCTION

+
+
+
+ +__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_20.xml + + +

quad_fcn_subtype/code

+

[293 257 161 328]

+

[0 156.75 0 153.75]

+

[1 1 1280 778 1.25]

+

20

+

LIBRARY_TOOLBAR

+

8

+

CLUSTER_CHART

+

EML_CHART

+

2

+

1

+ +

quad_fcn_subtype

+
+ + +

eML_blk_kernel()

+

[18 64.5 118 66]

+

12

+

SUBCHART

+

20

+

FUNC_STATE

+

CLUSTER_STATE

+ +

1

+

function [x1,x2] = quad_fcn_subtype(c,a,b) +%%#eml +x1=-c/b; +x2=-c/b; +if(a == 0) + if(b ~= 0) + x1 = -c/b; + x2 = -c/b; + end +elseif(a ~= 0) + if((b^2) - 4*a*c == 0) + x1 = -b/2*a; + x2 = -b/2*a; + elseif((b^2) - 4*a*c > 0) + if(b>=0) + x1 = (-b - sqrt(b^2 - 4*a*c)) / 2*a; + x2 = c / (a* ((-b - sqrt(b^2 - 4*a*c)) / 2*a)); + elseif(b<0) + x1 = (-b + sqrt(b^2 - 4*a*c)) / 2*a; + x2 = c / (a* ((-b + sqrt(b^2 - 4*a*c)) / 2*a)); + end + end +end +

+

Matrix(4,1) +[205.0, 227.0, 1080.0, 733.0]

+

1

+
+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

OUTPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

INPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_INHERITED

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

OUTPUT_DATA

+ + +

-1

+
+ +

SF_INHERITED_TYPE

+

SF_DOUBLE_TYPE

+

1

+

16

+
+

SF_COMPLEX_INHERITED

+

SF_FRAME_NO

+ +

inherit

+
+
+

Inherit: Same as Simulink

+
+ +

{eML_blk_kernel();}

+

[32.125 19.875 102.544 14.964]

+

12

+ +

[0 0 1 0 23.5747 14.625 0 0]

+
+ +

3

+

[1 0 -1 0 23.5747 42.5747 0 0]

+
+

[23.5747 24.9468]

+

[23.575 23.575 14.625 34.575]

+

20

+

SMART

+ +

BOTH_STICK

+
+

1

+
+ +

[23.5747 49.5747 7]

+

20

+

CONNECTIVE_JUNCTION

+
+
+
+ +__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml + + + +

80000046

+ + +

Default Simulink S-Function Target.

+
+ + +
+
+ +

9

+

quad_fcn_fp/code

+

10

+
+ +

9

+

quad_fcn_subtype/code

+

20

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_38.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels + + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml + + +

[395, 327, 933, 805]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

Simulink

+ +

[35, 38, 65, 52]

+

-1

+
+ +

[35, 38, 65, 52]

+

-2

+

2

+
+ +

[35, 38, 65, 52]

+

-3

+

3

+
+ +

[3, 2]

+

[250, 51, 320, 99]

+

-4

+

1.31

+

Stateflow.Translate.translate

+

ExplicitOnly

+

on

+

off

+

MATLAB Function

+ +
+ +

[35, 53, 65, 67]

+

-5

+
+ +

[35, 53, 65, 67]

+

-6

+

2

+
+ +

1

+

4#out:1

+

3#in:1

+
+ +

2

+

5#out:1

+

3#in:2

+
+ +

3

+

6#out:1

+

3#in:3

+
+ +

4

+

3#out:1

+

8#in:1

+
+ +

5

+

3#out:2

+

9#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml + + +

[219, 337, 814, 775]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

27

+

13

+

Simulink

+ +

[20, 101, 40, 119]

+

-1

+
+ +

[20, 136, 40, 154]

+

-2

+

2

+
+ +

[20, 171, 40, 189]

+

-3

+

3

+
+ +

[1, 1]

+

[270, 230, 320, 270]

+

2

+

1

+
+ +

Stateflow S-Function 2

+

[3, 3]

+

[180, 100, 230, 180]

+

1

+

sf_sfun

+

[3 3]

+

off

+

on

+

off

+ +

2

+

x1

+
+ +

3

+

x2

+
+
+ +

[460, 241, 480, 259]

+

3

+
+ +

[460, 101, 480, 119]

+

-7

+
+ +

[460, 136, 480, 154]

+

-8

+

2

+
+ +

8

+

3::1#out:1

+

3::25#in:1

+
+ +

9

+

3::18#out:1

+

3::25#in:2

+
+ +

10

+

3::19#out:1

+

3::25#in:3

+
+ +

x1

+

11

+

[0, 0]

+

3::25#out:2

+

3::5#in:1

+
+ +

x2

+

12

+

[0, 0]

+

3::25#out:3

+

3::20#in:1

+
+ +

13

+

3::26#out:1

+

3::27#in:1

+
+ +

14

+

3::25#out:1

+

3::26#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_38.xml + + +

[395, 327, 933, 805]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

Simulink

+ +

[35, 38, 65, 52]

+

-1

+
+ +

[35, 38, 65, 52]

+

-2

+

2

+
+ +

[35, 38, 65, 52]

+

-3

+

3

+
+ +

[3, 2]

+

[250, 51, 320, 99]

+

-4

+

1.31

+

Stateflow.Translate.translate

+

ExplicitOnly

+

on

+

off

+

MATLAB Function

+ +
+ +

[35, 53, 65, 67]

+

-5

+
+ +

[35, 53, 65, 67]

+

-6

+

2

+
+ +

1

+

41#out:1

+

40#in:1

+
+ +

2

+

42#out:1

+

40#in:2

+
+ +

3

+

43#out:1

+

40#in:3

+
+ +

4

+

40#out:1

+

44#in:1

+
+ +

5

+

40#out:2

+

45#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_40.xml + + +

[219, 337, 814, 775]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

off

+

Deduce

+

27

+

13

+

Simulink

+ +

[20, 101, 40, 119]

+

-1

+
+ +

[20, 136, 40, 154]

+

-2

+

2

+
+ +

[20, 171, 40, 189]

+

-3

+

3

+
+ +

[1, 1]

+

[270, 230, 320, 270]

+

2

+

1

+
+ +

Stateflow S-Function 1

+

[3, 3]

+

[180, 100, 230, 180]

+

1

+

sf_sfun

+

[3 3]

+

off

+

on

+

off

+ +

2

+

x1

+
+ +

3

+

x2

+
+
+ +

[460, 241, 480, 259]

+

3

+
+ +

[460, 101, 480, 119]

+

-7

+
+ +

[460, 136, 480, 154]

+

-8

+

2

+
+ +

8

+

40::1#out:1

+

40::25#in:1

+
+ +

9

+

40::18#out:1

+

40::25#in:2

+
+ +

10

+

40::19#out:1

+

40::25#in:3

+
+ +

x1

+

11

+

[0, 0]

+

40::25#out:2

+

40::5#in:1

+
+ +

x2

+

12

+

[0, 0]

+

40::25#out:3

+

40::20#in:1

+
+ +

13

+

40::26#out:1

+

40::27#in:1

+
+ +

14

+

40::25#out:1

+

40::26#in:1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml + + +

[470, 174, 1298, 794]

+

[0.000000, 0.000000, 0.000000, 0.000000]

+

on

+

off

+

Deduce

+

89

+

simulink-default.rpt

+

46

+

Simulink

+ +

[3, 1]

+

[170, 157, 180, 243]

+

-1

+

off

+

3

+

bar

+

on

+
+ +

[35, 105, 65, 135]

+

-2

+

4

+
+ +

[35, 185, 65, 215]

+

-3

+

-5

+
+ +

[30, 30, 60, 60]

+

-4

+
+ +

[1, 2]

+

[370, 156, 375, 194]

+

-5

+

off

+

2

+
+ +

[1]

+

[505, 20, 595, 50]

+

-6

+

1

+
+ +

[1]

+

[515, 215, 605, 245]

+

-7

+

1

+
+ +

[1]

+

[430, 295, 520, 325]

+

-8

+

1

+
+ +

[1]

+

[435, 350, 525, 380]

+

-9

+

1

+
+ +

[1, 1]

+

[235, 152, 325, 208]

+

-10

+

roots

+

2

+

off

+
+ +

[]

+

[485, 59, 515, 91]

+

-11

+ +

8,19

+

Demux:o2quad_fcn_subtype:o2

+
+

Simulink.scopes.TimeScopeBlockCfg('CurrentConfiguration', extmgr.ConfigurationSet(extmgr.Configuration('Core','General UI',true),extmgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources','WiredSimulink',true,'DataLoggingSaveFormat','StructureWithTime','DataLoggingLimitDataPoints',true,'DataLoggingDecimation','1','DataLoggingDecimateData',true),extmgr.Configuration('Visuals','Time Domain',true,'SerializedDisplays',{struct('MinYLimReal','0.9','MaxYLimReal','1.1','YLabelReal','','MinYLimMag','0.9','MaxYLimMag','1.1','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',2,'LineNames',{{'Demux/2','quad_fcn_subtype/x2'}},'ShowContent',true,'Placement',1)},'DisplayPropertyDefaults',struct('MinYLimReal','0.9','MaxYLimReal','1.1','YLabelReal','','MinYLimMag','0.9','MaxYLimMag','1.1','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1)),extmgr.Configuration('Tools','Plot Navigation',true),extmgr.Configuration('Tools','Measurements',true,'Version','2021b')),'Version','2021b','Location',[361 434 685 673])

+

1

+

on

+
+ +

[]

+

[475, 158, 505, 192]

+

-12

+ +

8,19

+

Demux:o1quad_fcn_subtype:o1

+
+

Simulink.scopes.TimeScopeBlockCfg('CurrentConfiguration', extmgr.ConfigurationSet(extmgr.Configuration('Core','General UI',true),extmgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources','WiredSimulink',true,'DataLoggingVariableName','ScopeData1','DataLoggingSaveFormat','StructureWithTime','DataLoggingLimitDataPoints',true,'DataLoggingDecimation','1','DataLoggingDecimateData',true),extmgr.Configuration('Visuals','Time Domain',true,'SerializedDisplays',{struct('MinYLimReal','-6.00000','MaxYLimReal','-4.00000','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','6.00000','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',2,'LineNames',{{'Demux/1','quad_fcn_subtype/x1'}},'ShowContent',true,'Placement',1)},'DisplayPropertyDefaults',struct('MinYLimReal','-6.00000','MaxYLimReal','-4.00000','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','6.00000','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1)),extmgr.Configuration('Tools','Plot Navigation',true),extmgr.Configuration('Tools','Measurements',true,'Version','2021b')),'Version','2021b','Location',[37 522 442 784])

+

1

+

on

+
+ +

[2, 1]

+

[455, 25, 475, 45]

+

-13

+

off

+

|+-

+
+ +

[2, 1]

+

[480, 220, 500, 240]

+

-14

+

off

+

|+-

+
+ +

[3, 2]

+

[555, 301, 720, 369]

+

-15

+

1.12

+

on

+

+

TTdiag Copy

+

TTdiag Delete

+

TTdiag Open Simulink

+

off

+ + port_label('input',1,'a');port_label('input',2,'b');port_label('input',3,'c');port_label('output',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center') + Table Block + + +
+ +

[3, 2]

+

[185, 31, 350, 99]

+

-16

+

1.12

+

on

+

+

TTdiag Copy

+

TTdiag Delete

+

TTdiag Open Simulink

+

off

+ + port_label('input',1,'c');port_label('input',2,'a');port_label('input',3,'b');port_label('output',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center') + Table Block + + +
+ +

1

+

13#out:1

+

[45, 0; 0, 20]

+ +

2

+

[0, 105]

+

14#in:1

+
+ +

3

+

1#in:2

+
+
+ +

4

+

11#out:1

+

[30, 0; 0, 80; 40, 0]

+ +

5

+

14#in:2

+
+ +

6

+

[0, -115]

+

1#in:3

+
+
+ +

7

+

12#out:1

+

[20, 0; 0, 30; 30, 0]

+ +

8

+

14#in:3

+
+ +

9

+

[0, -185]

+

1#in:1

+
+
+ +

10

+

14#out:1

+

[20, 0; 0, -20]

+

10#in:1

+
+ +

11

+

10#out:1

+

[25, 0]

+

21#in:1

+
+ +

12

+

1#out:1

+

[30, 0; 0, -15; 25, 0]

+ +

13

+

27#in:1

+
+ +

14

+

[0, 275]

+

31#in:1

+
+
+ +

15

+

[0, 0]

+

21#out:2

+

[0, -5; 35, 0]

+

28#in:2

+
+ +

16

+

1#out:2

+

[40, 0; 0, 145; 25, 0]

+ +

17

+

28#in:1

+
+ +

18

+

32#in:1

+
+
+ +

19

+

28#out:1

+

30#in:1

+
+ +

20

+

27#out:1

+

29#in:1

+
+ +

21

+

[0, 0]

+

21#out:1

+

[10, 0]

+

27#in:2

+
+ +

This model demonstrates the use of predicate subtyping through +the implementation of quad_fcn, which will give the real roots +of a quadratic function. + +results are compared to the matlab function roots, results are +generally the same, although sometimes there is a small error +on the order of 1e-16. + +Currently does not activly check that inputs satisfy subtype +constraints, in these cases proper output is not guaranteed. + +This example will not work under CVC3 as complex functions like +sqrt are not supported. + +This example requires the NASA PVS libraries

+

[79, 267, 368, 419]

+

[0, 0, 0, 0]

+

-1

+
+
+ +__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml + + + + +

1

+

[470.0, 174.0, 828.0, 620.0]

+ +

0

+

Left

+

50

+

50

+

8

+

Unset

+
+ +

1

+
+ +

1

+

1

+

SimulinkTopLevel

+

0

+

[790.0, 385.0]

+

0.89473684210526316

+

[-63.845588235294088, 4.35294117647058]

+

[-63.845588235294088, 4.35294117647058, 882.94117647058818, 430.29411764705884]

+
+ + +

Simulink:Editor:ReferencedFiles

+

Referenced Files

+

0

+

+

{"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"} +

+

0

+

Left

+

640

+

480

+

Unset

+
+ +

GLUE2:PropertyInspector

+

Property Inspector

+

0

+

+

+

0

+

Right

+

640

+

480

+

Unset

+
+
+

AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAzwAAAG+AAAAAQAAAAIAAAABAAAAAvwAAAAA

+ +

34490877-6e2a-4f6a-bbcd-64cdf4dabf57

+
+

+

+
+ +__MWOPC_PACKAGE_END__ diff --git a/Examples/quadratic_roots.mdl.r2010a b/Examples/quadratic_roots.mdl.r2010a new file mode 100644 index 0000000..caa8dc1 --- /dev/null +++ b/Examples/quadratic_roots.mdl.r2010a @@ -0,0 +1,2422 @@ +Model { + Name "quadratic_roots" + Version 7.5 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.18" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "ISO-8859-1" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + MaxMDLFileLineLength 120 + Created "Fri Jan 21 14:32:13 2011" + Creator "colin" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "matthew" + ModifiedDateFormat "%" + LastModifiedDate "Thu May 15 16:21:42 2014" + RTWModifiedTimeStamp 322071698 + ModelVersionFormat "1.%" + ConfigurationManager "none" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "VariableStepDiscrete" + SolverName "VariableStepDiscrete" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 6 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 19 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "SFDataObjDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "PortableWordSizes" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "SupportNonFinite" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] " + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 1 + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType BusCreator + Inputs "4" + DisplayOption "none" + UseBusObject off + BusObject "BusObject" + NonVirtualBus off + } + Block { + BlockType Constant + Value "1" + VectorParams1D on + SamplingMode "Sample based" + OutMin "[]" + OutMax "[]" + OutDataTypeMode "Inherit from 'Constant value'" + OutDataType "fixdt(1,16,0)" + ConRadixGroup "Use specified scaling" + OutScaling "[]" + OutDataTypeStr "Inherit: Inherit from 'Constant value'" + LockScale off + SampleTime "inf" + FramePeriod "inf" + PreserveConstantTs off + } + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Display + Format "short" + Decimation "10" + Floating off + SampleTime "-1" + } + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType MATLABFcn + MATLABFcn "sin" + OutputDimensions "-1" + OutputSignalType "auto" + Output1D on + SampleTime "-1" + } + Block { + BlockType Outport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType "S-Function" + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType Scope + ModelBased off + TickLabels "OneTimeTick" + ZoomMode "on" + Grid "on" + TimeRange "auto" + YMin "-5" + YMax "5" + SaveToWorkspace off + SaveName "ScopeData" + LimitDataPoints on + MaxDataPoints "5000" + Decimation "1" + SampleInput off + SampleTime "-1" + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + Block { + BlockType Sum + IconShape "rectangular" + Inputs "++" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT on + AccumDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeMode "Same as first input" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Terminator + } + } + System { + Name "quadratic_roots" + Location [890, 569, 1678, 1011] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 45 + Block { + BlockType BusCreator + Name "Bus\nCreator" + SID 14 + Ports [3, 1] + Position [170, 157, 180, 243] + ShowName off + Inputs "3" + DisplayOption "bar" + } + Block { + BlockType Constant + Name "Constant" + SID 11 + Position [35, 105, 65, 135] + Value "4" + } + Block { + BlockType Constant + Name "Constant1" + SID 12 + Position [35, 185, 65, 215] + Value "-5" + } + Block { + BlockType Constant + Name "Constant2" + SID 13 + Position [30, 30, 60, 60] + } + Block { + BlockType Demux + Name "Demux" + SID 21 + Ports [1, 2] + Position [370, 156, 375, 194] + ShowName off + Outputs "2" + DisplayOption "bar" + } + Block { + BlockType Display + Name "Display" + SID 29 + Ports [1] + Position [505, 20, 595, 50] + Decimation "1" + Lockdown off + } + Block { + BlockType Display + Name "Display1" + SID 30 + Ports [1] + Position [515, 215, 605, 245] + Decimation "1" + Lockdown off + } + Block { + BlockType Display + Name "Display2" + SID 31 + Ports [1] + Position [430, 295, 520, 325] + Decimation "1" + Lockdown off + } + Block { + BlockType Display + Name "Display3" + SID 32 + Ports [1] + Position [435, 350, 525, 380] + Decimation "1" + Lockdown off + } + Block { + BlockType MATLABFcn + Name "MATLAB Fcn" + SID 10 + Ports [1, 1] + Position [235, 152, 325, 208] + MATLABFcn "roots" + OutputDimensions "2" + Output1D off + } + Block { + BlockType Scope + Name "Scope" + SID 25 + Ports [] + Position [485, 59, 515, 91] + List { + ListType IOSignalStrings + set0ParseKeys "8,19" + set0Sigs "Demux:o2quad_fcn_subtype:o2" + } + Floating on + Location [361, 434, 685, 673] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%" + } + DataFormat "StructureWithTime" + SampleTime "0" + } + Block { + BlockType Scope + Name "Scope1" + SID 26 + Ports [] + Position [475, 158, 505, 192] + List { + ListType IOSignalStrings + set0ParseKeys "8,19" + set0Sigs "Demux:o1quad_fcn_subtype:o1" + } + Floating on + Location [37, 522, 442, 784] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%" + } + SaveName "ScopeData1" + DataFormat "StructureWithTime" + SampleTime "0" + } + Block { + BlockType Sum + Name "Sum" + SID 27 + Ports [2, 1] + Position [455, 25, 475, 45] + ShowName off + IconShape "round" + Inputs "|+-" + InputSameDT off + OutDataTypeMode "Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum1" + SID 28 + Ports [2, 1] + Position [480, 220, 500, 240] + ShowName off + IconShape "round" + Inputs "|+-" + InputSameDT off + OutDataTypeMode "Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType SubSystem + Name "quad_fcn_fp" + SID 38 + Ports [3, 2] + Position [555, 301, 720, 369] + LibraryVersion "1.12" + UserDataPersistent on + UserData "DataTag0" + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'a');port_label('input',2,'b');port_label('input',3,'c');port_label('out" + "put',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');c" + "olor('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "quad_fcn_fp" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "a" + SID 41 + Position [35, 38, 65, 52] + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "b" + SID 42 + Position [35, 38, 65, 52] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "c" + SID 43 + Position [35, 38, 65, 52] + Port "3" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "code" + SID 40 + Ports [3, 2] + Position [250, 51, 320, 99] + LibraryVersion "1.31" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskDisplay "disp('quad_fcn_fp');" + MaskSelfModifiable on + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "code" + Location [257, 457, 812, 717] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark 24 + SIDPrevWatermark 13 + Block { + BlockType Inport + Name "a" + SID 1 + Position [20, 101, 40, 119] + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "b" + SID 18 + Position [20, 136, 40, 154] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "c" + SID 19 + Position [20, 171, 40, 189] + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID 22 + Ports [1, 1] + Position [270, 180, 320, 220] + Outputs "1" + } + Block { + BlockType "S-Function" + Name " SFunction " + SID 21 + Tag "Stateflow S-Function quadratic_roots 1" + Ports [3, 3] + Position [180, 100, 230, 180] + FunctionName "sf_sfun" + PortCounts "[3 3]" + EnableBusSupport on + Port { + PortNumber 2 + Name "x1" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "x2" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID 24 + Position [460, 191, 480, 209] + } + Block { + BlockType Outport + Name "x1" + SID 5 + Position [460, 101, 480, 119] + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "x2" + SID 20 + Position [460, 136, 480, 154] + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock "a" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "b" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "c" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + Name "x1" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "x1" + DstPort 1 + } + Line { + Name "x2" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "x2" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "x1" + SID 44 + Position [35, 53, 65, 67] + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "x2" + SID 45 + Position [35, 53, 65, 67] + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock "a" + SrcPort 1 + DstBlock "code" + DstPort 1 + } + Line { + SrcBlock "b" + SrcPort 1 + DstBlock "code" + DstPort 2 + } + Line { + SrcBlock "c" + SrcPort 1 + DstBlock "code" + DstPort 3 + } + Line { + SrcBlock "code" + SrcPort 1 + DstBlock "x1" + DstPort 1 + } + Line { + SrcBlock "code" + SrcPort 2 + DstBlock "x2" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "quad_fcn_subtype" + SID 1 + Ports [3, 2] + Position [185, 31, 350, 99] + LibraryVersion "1.12" + UserDataPersistent on + UserData "DataTag1" + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'c');port_label('input',2,'a');port_label('input',3,'b');port_label('out" + "put',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');c" + "olor('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "quad_fcn_subtype" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "c" + SID 4 + Position [35, 38, 65, 52] + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "a" + SID 5 + Position [35, 38, 65, 52] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "b" + SID 6 + Position [35, 38, 65, 52] + Port "3" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "code" + SID 3 + Ports [3, 2] + Position [250, 51, 320, 99] + LibraryVersion "1.31" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskDisplay "disp('quad_fcn_subtype');" + MaskSelfModifiable on + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "code" + Location [257, 457, 812, 717] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark 24 + SIDPrevWatermark 13 + Block { + BlockType Inport + Name "c" + SID 1 + Position [20, 101, 40, 119] + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "a" + SID 18 + Position [20, 136, 40, 154] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "b" + SID 19 + Position [20, 171, 40, 189] + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID 22 + Ports [1, 1] + Position [270, 180, 320, 220] + Outputs "1" + } + Block { + BlockType "S-Function" + Name " SFunction " + SID 21 + Tag "Stateflow S-Function quadratic_roots 2" + Ports [3, 3] + Position [180, 100, 230, 180] + FunctionName "sf_sfun" + PortCounts "[3 3]" + EnableBusSupport on + Port { + PortNumber 2 + Name "x1" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "x2" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID 24 + Position [460, 191, 480, 209] + } + Block { + BlockType Outport + Name "x1" + SID 5 + Position [460, 101, 480, 119] + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "x2" + SID 20 + Position [460, 136, 480, 154] + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock "c" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "a" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "b" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + Name "x1" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "x1" + DstPort 1 + } + Line { + Name "x2" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "x2" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "x1" + SID 8 + Position [35, 53, 65, 67] + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "x2" + SID 9 + Position [35, 53, 65, 67] + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock "c" + SrcPort 1 + DstBlock "code" + DstPort 1 + } + Line { + SrcBlock "a" + SrcPort 1 + DstBlock "code" + DstPort 2 + } + Line { + SrcBlock "b" + SrcPort 1 + DstBlock "code" + DstPort 3 + } + Line { + SrcBlock "code" + SrcPort 1 + DstBlock "x1" + DstPort 1 + } + Line { + SrcBlock "code" + SrcPort 2 + DstBlock "x2" + DstPort 1 + } + } + } + Line { + SrcBlock "Constant2" + SrcPort 1 + Points [45, 0; 0, 15] + Branch { + Points [0, 110] + DstBlock "Bus\nCreator" + DstPort 1 + } + Branch { + Points [0, 5] + DstBlock "quad_fcn_subtype" + DstPort 2 + } + } + Line { + SrcBlock "Constant" + SrcPort 1 + Points [30, 0; 0, 80; 40, 0] + Branch { + DstBlock "Bus\nCreator" + DstPort 2 + } + Branch { + Points [0, -115] + DstBlock "quad_fcn_subtype" + DstPort 3 + } + } + Line { + SrcBlock "Constant1" + SrcPort 1 + Points [20, 0; 0, 30; 30, 0] + Branch { + DstBlock "Bus\nCreator" + DstPort 3 + } + Branch { + Points [0, -185] + DstBlock "quad_fcn_subtype" + DstPort 1 + } + } + Line { + SrcBlock "Bus\nCreator" + SrcPort 1 + Points [20, 0; 0, -20] + DstBlock "MATLAB Fcn" + DstPort 1 + } + Line { + SrcBlock "MATLAB Fcn" + SrcPort 1 + Points [25, 0] + DstBlock "Demux" + DstPort 1 + } + Line { + SrcBlock "quad_fcn_subtype" + SrcPort 1 + Points [30, 0; 0, -15; 25, 0] + Branch { + DstBlock "Sum" + DstPort 1 + } + Branch { + Points [0, 275] + DstBlock "Display2" + DstPort 1 + } + } + Line { + Labels [0, 0] + SrcBlock "Demux" + SrcPort 2 + Points [0, -5; 35, 0] + DstBlock "Sum1" + DstPort 2 + } + Line { + SrcBlock "quad_fcn_subtype" + SrcPort 2 + Points [40, 0; 0, 145; 25, 0] + Branch { + DstBlock "Sum1" + DstPort 1 + } + Branch { + DstBlock "Display3" + DstPort 1 + } + } + Line { + SrcBlock "Sum1" + SrcPort 1 + DstBlock "Display1" + DstPort 1 + } + Line { + SrcBlock "Sum" + SrcPort 1 + DstBlock "Display" + DstPort 1 + } + Line { + Labels [0, 0] + SrcBlock "Demux" + SrcPort 1 + Points [10, 0] + DstBlock "Sum" + DstPort 2 + } + Annotation { + Name "This model demonstrates the use of predicate subtyping through\nthe implementation of quad_fcn, whi" + "ch will give the real roots\nof a quadratic function.\n\nresults are compared to the matlab function roots, resu" + "lts are \ngenerally the same, although sometimes there is a small error\non the order of 1e-16.\n\nCurrently doe" + "s not activly check that inputs satisfy subtype\nconstraints, in these cases proper output is not guaranteed.\n\n" + "This example will not work under CVC3 as complex functions like\nsqrt are not supported.\n\nThis example require" + "s the NASA PVS libraries" + Position [223, 343] + } + } +} +MatData { + NumRecords 2 + DataRecord { + Tag DataTag1 + Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X \"H/@ !@ @ ) " + "4 ( 0 '@^ ! ( !X/@ %)30 . V#T 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . D#T 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E<" + "E]? #@ % ] & \" $ !0 @ !X 0 $ #@ +@+ & \" D !0 @ " + " \"(\"P 0 $ @ (@+ \" + -@! X @ . ( ) $ # \"@ B L 1W)I9# 0V5L;', 0V5L;#$" + " 8V]N9%]T97AT &-E;&Q?:6YD97@ <&%R96YT7V=R:60 8V5L;', 1W)I9 !P87)E;G1?8V5L; !S<&QI=%]P8@!N=6U?8V5L;', 9W)I9%]I;F1E>" + " !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F,BD@+2 T*F$J8R ]/2 P #@ #@ & \" 8 !0 " + " @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $ ! " + " 8 8 W0( ! 0 P ! #@ #@ & \" 8 !0 @ ! 0 $ \"0 " + " @ 0 X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . " + " 8 ( !@ % \" $ ! 0 ) \" / _#@ $@ & \" T !0 " + " @ & 0 $ !@ !@ #= @ $ ! #@ ( . , 8 ( ! % \" " + " $ $ 0 0 0 8CX], X X !@ @ & 4 ( 0 $ ! D ( " + " \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ / 0 " + " X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ " + " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 " + " $ \"0 @ #P/PX P !@ @ $ 4 ( 0 , ! ! P!B/# #@ " + " #@ & \" 8 !0 @ ! 0 $ \"0 @ 0 X !( !@ @ - " + " 4 ( !@ $ ! 8 8 W0( ! 0 \\ ! #@ #@ & \" 8 !0 " + " @ ! 0 $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! " + " D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" / _#@ " + " % & \" T !0 @ ' 0 $ !@ !P #= @ $ \" $ !$ \" " + " X X !@ @ & 4 ( 0 $ ! D ( $ . . 8 ( !@ " + " % \" $ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 " + " $ !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 ! 0 " + " & & -T\" 0 $ / 0 X !( !@ @ $ 4 ( 0 !$ ! " + "! 1 *&)>,BD@+2 T*F$J8R ^(# #@ #@ & \" 8 !0 @ ! 0 $ \"0 " + " @ 0 X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 P" + " ! #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ @" + " & 4 ( 0 $ ! D ( !$ . 4 8 ( #0 % \" < " + " ! 0 & ' -T\" 0 ( - #@ ( #@ #@ & \" 8 !0 @ " + " ! 0 $ \"0 @ 0 X X !@ @ & 4 ( 0 $ ! D " + " ( $ . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ " + " \" P X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 P " + " ! #@ #@ & \" 0 !0 @ ! !@ $ $ 8 !A('X](# X X !@ @ " + "& 4 ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 !" + " 0 & & -T\" 0 $ * 0 X X !@ @ & 4 ( 0 $ ! " + " D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" " + " !! #@ % & \" T !0 @ ' 0 $ !@ !P #= @ $ \" \"0 L " + " \" X X !@ @ & 4 ( 0 $ ! D ( $ . . 8 " + "( !@ % \" $ ! 0 ) \" ! #@ $@ & \" T !0 @ " + " & 0 $ !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 " + "! 0 & & -T\" 0 $ * 0 X X !@ @ & 4 ( 0 $ !" + " D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" " + " /@_#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! \"0 ( " + " . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ' @ X " + " X !@ @ & 4 ( 0 $ ! D ( $ . . 8 ( !@ %" + " \" $ ! 0 ) \" / _#@ $@ & \" T !0 @ & 0 $ " + " !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 ! 0 &" + " & -T\" 0 $ ( 0 X X !@ @ & 4 ( 0 $ ! D ( " + " $ . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #@ & " + " \" 8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( " + " !@ $ ! 8 8 W0( ! 0 < \" #@ # & \" 0 !0 @ ! " + " ! $ $ $ \"UC+V(. 2 8 ( !@ % \" $ # 0 ) & " + "/ _ \\#\\ #P/PX !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! " + " 0 0 \" #@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! " + " #0 ( . . 8 ( ! % \" $ & 0 0 !@ \"UB+S(J80 #@ $@ & " + " \" 8 !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 " + "( #0 % \" 8 ! 0 & & -T\" 0 $ $ @ X !( !@ @ " + "- 4 ( !@ $ ! 8 8 W0( ! 0 ! \" #@ % & \" 0 " + " !0 @ ! '@ $ $ !X H+6(@+2!S<7)T*&)>,B M(#0J82IC*2D@+R R*F$ X !( !@ @ & " + " 4 ( 0 , ! D 8 \\#\\ #P/P / _#@ $@ & \" T " + " !0 @ & 0 $ !@ !@ #= @ $ ! ! ( . 2 8 ( #0 % " + " \" 8 ! 0 & & -T\" 0 $ 1 @ X !0 !@ @ $ 4 ( " + " 0 !X ! ! > *\"UB(\"L@,BD@+2 T*F$J8R ^/2 P*7T #@ )@! & \" ( !0 @ ! 0 $ " + " !0 $ < ! (P '-E= !I;G!U=', 8V]U;G0 ')A;F=E !E>&-E<'0 . . 8 ( !@ % " + " \" $ ! 0 ) \" / _#@ # & \" 8 !0 @ $ " + " \"0 . . 8 ( !@ % \" $ ! 0 ) \" 0(] #@ #@ & " + " \" 8 !0 @ ! 0 $ \"0 @ !90 X X !@ @ & 4 ( " + " 0 $ ! D ( . . 8 ( !@ % \" $ ! 0 ) " + " \" #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ X X " + " !@ @ & 4 ( 0 $ ! D ( \\#\\. 4 X 8 ( 0 % " + " \" 8 ! 0 . . 8 ( @ % \" $ 0 % 0 0 $ " + " #@ ,@\" & \" ( !0 @ ! 0 $ !0 $ \\ ! AP '!A'1?:&5I9VAT &-O;F1I=&EO;E]T97AT7W@ !C;VYD:71I;VY?=&5X=%]Y 8V]N9&ET:6" + "]N7W1E>'1?;V9F !" + "R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F P ( = ! ," + " 1 @ 0 # 0 4 \" @ 8 ! @ " + " < 0 0 @ / @ D - 0 H " + " , @ L + 0 P * @ T $ @ " + " X % @ \\ ) 0 ! ( @ !$ & " + " @ !( ' @ !, . ! !0 2 ! " + " !4 3 ! !8 4 ! !< 5 ! !@ 6 !" + " !D 7 ! !H 8 ! !L 9 ! " + " !P : ! !T ; ! !X < ) 0 $ \"( 'P " + " $ \") ( $ \"* )0 $ \"+ )@ $ \", )P $ \"- * $ \". *0 $ \"/ " + " *@ $ \"0 P ( ! A0 !\\ ! A@ \" ! AP 0 # 0 P A 0 %8 B " + " 0 %< 7 0 %@ ! 0 ! 4 ! 0 8 ! \"@ ! ! \"P $ " + " !P $ & \"P $ ' # $ ( #0 $ ) 0 $ 0 ( % 0 , & " + " 0 0 0 0 4 !@ 0 ! #0 4 ! #@ 8 ! 4@ !0 ! 4P !4 ! 5" + " ! ! 50 % \"0 $ !' !P $ !. \"P $ !/ # $ !0 #0 $ !1 !" + "@ !( ! #P 0 ! $ 4 ! $0 8 ! 1 !0 ! 10 !4 ! 1@ $ !P " + " $ ! \"P $ !! # $ !\" #0 $ !# 8 2 0 #H $ 0 #L % 0 " + " #P & 0 #T 4 0 #X 5 0 #\\ !0 D ! $@ < ! -@ L ! -P " + " P ! . T ! .0 8 $ 0 !, % 0 !0 & 0 !4 4 0 !8 5 0 !" + "< 0 0 !@ !@ 0 ! &0 4 ! &@ 8 ! &P !0 ! ' !4 ! '0 ! " + " ! '@ & $@ $ P ! $ Q !0 $ R !@ $ S % $ T %0 $ " + " U 4 ) 0 !\\ ' 0 \"P + 0 \"T , 0 \"X - 0 \"\\ & ! " + "$ @ !0 $ A !@ $ B % $ C %0 $ D $ $ E 8 $ 0 \"8" + " % 0 \"< & 0 \"@ 4 0 \"D 5 0 \"H 0 0 \"L !@ 0 ! 2 " + " 4 ! 20 8 ! 2@ !0 ! 2P !4 ! 3 ! ! 30 $ P $ !9 (0 " + "$ !: (@ $ !; %P $ !< 0 # 0 %T A 0 %X B 0 %\\ 7 0 & " + " ! , ! 80 \"$ ! 8@ \"( ! 8P !< ! 9 $ P $ !E (0 $" + " !F (@ $ !G %P $ !H 0 # 0 &D A 0 &H B 0 &L 7 0 &P " + " ! , ! ;0 \"$ ! ;@ \"( ! ;P !< ! < $ P $ !Q (0 $ " + " !R (@ $ !S %P $ !T 0 # 0 '4 A 0 '8 B 0 '< 7 0 '@ " + " ! , ! >0 \"$ ! >@ \"( ! >P !< ! ? $ P $ !] (0 $ !" + "^ (@ $ !_ %P $ \" 0 # 0 ($ A 0 (( B 0 (, 7 0 (0 " + " " + " " + " . " + " X ! !@ @ $ 4 ( 0 D ! ! ) >#$Z *\"UB(\"L@&-E<'0 . . 8 ( !@ % \" $ ! 0 ) \" / _#" + "@ # & \" 8 !0 @ $ \"0 . . 8 ( !@ % \"" + " $ ! 0 ) \" 0(] #@ #@ & \" 8 !0 @ ! 0 $ \"" + "0 @ !90 X X !@ @ & 4 ( 0 $ ! D ( . . " + " 8 ( !@ % \" $ ! 0 ) \" #@ #@ & \" 8 !0" + " @ ! 0 $ \"0 @ X X !@ @ & 4 ( 0 $ ! " + " D ( \\#\\. 4 X 8 ( 0 % \" 8 ! 0 . . 8 ( @" + " % \" $ 0 % 0 0 $ #@ ,@\" & \" ( !0 @ ! " + "0 $ !0 $ \\ ! AP '!A'1?:&5I9VAT &-O;F1I=&" + "EO;E]T97AT7W@ !C;VYD:71I;VY?=&5X=%]Y 8V]N9&ET:6]N7W1E>'1?;V9F 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #0)P !@ @ ) 4" + " ( 0 * G ! ( \"@)P %)30 . \"< 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . N\"8 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!" + "E " + "!R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F#XP X X !@ @ & 4 ( 0 $ ! D " + " ( \\#\\. , 8 ( ! % \" $ # 0 0 , >#PP X X !@ @ " + " & 4 ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 " + " ! 0 & & -T\" 0 $ ( 0 X X !@ @ & 4 ( 0 $ " + "! D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" " + " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX !0 !@ @ " + " - 4 ( !P $ ! 8 < W0( ! @ < ) @ . . 8 " + "( !@ % \" $ ! 0 ) \" ! #@ #@ & \" 8 !0 @ " + " ! 0 $ \"0 @ 0 X !( !@ @ - 4 ( !@ $ ! 8 " + "8 W0( ! 0 ( # #@ $@ & \" T !0 @ & 0 $ !@ !@ " + " #= @ $ ! \" $ . . 8 ( !@ % \" $ ! 0 ) \" " + " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ @ " + "& 4 ( 0 $ ! D ( \\#\\. 2 8 ( #0 % \" 8 " + " ! 0 & & -T\" 0 $ ' @ X P !@ @ $ 4 ( 0 $ " + "! ! 0!X #@ $@ & \" 8 !0 @ ! P $ \"0 !@ #P/P " + " / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ " + " $ @ X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 D " + "\" #@ # & \" 0 !0 @ ! P $ $ # '@J>0 . 2 8 ( !@ " + "% \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - 4 " + " ( !@ $ ! 8 8 W0( ! 0 8 \" #@ $@ & \" T !0 @ " + " & 0 $ !@ !@ #= @ $ ! !P ( . , 8 ( ! % \" $ " + "# 0 0 , >2MX X !( !@ @ & 4 ( 0 , ! D 8 \\#\\" + " #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ !" + " !@ ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ )" + " @ X P !@ @ $ 4 ( 0 $ ! ! 0!Y #@ $@ & \" 8 " + " !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 6 8 ( #0 %" + " \" D ! 0 & ) -T\" 0 0 # \"@ L , ! . 2 8 " + "( #0 % \" 8 ! 0 & & -T\" 0 $ % 0 X !( !@ @ " + "- 4 ( !@ $ ! 8 8 W0( ! 0 @ ! #@ $@ & \" T " + " !0 @ & 0 $ !@ !@ #= @ $ ! @ , . 2 8 ( #0 % " + " \" 8 ! 0 & & -T\" 0 $ % 0 X !( !@ @ - 4 ( " + " !@ $ ! 8 8 W0( ! 0 @ ! #@ $ & \" 0 !0 @ ! " + " # $ $ P !F7W5N<')O=F%B;&4 #@ # & \" 0 !0 @ ! P $ " + "$ # '@L>0 . F $ 8 ( @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H " + " X P !@ @ & 4 ( ! D #@ # & \" 8 !0 " + " @ $ \"0 . , 8 ( !@ % \" 0 ) " + " X X !@ @ & 4 ( 0 $ ! D ( . , 8 ( !@ " + " % \" 0 ) X X !@ @ & 4 ( 0 $ ! D " + " ( . . 8 ( !@ % \" $ ! 0 ) \" #@ # " + " & \" 8 !0 @ $ \"0 . . 8 ( !@ % \" $" + " ! 0 ) \" #@ # & \" 8 !0 @ $ \"0 " + " . . 8 ( !@ % \" $ ! 0 ) \" &E #@ #@ & \" " + " 8 !0 @ ! 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 " + "$ ! D ( )$ . . 8 ( !@ % \" $ ! 0 ) \" " + " \"1 #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ " + " @ & 4 ( 0 $ ! D ( /D . ^ 8 ( @ % \" " + "$ ! 0 % 0 !@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @" + " $ \"0 . , 8 ( !@ % \" 0 ) X" + " P !@ @ & 4 ( ! D #@ ) ! & \" ( !0 @ " + " ! 0 $ !0 $ P ! / $-E;&PQ $-E;&PR ')E0)\n if(y>5)\n output = x;\n e" + "lseif(y<3)\n output = y+x;\n end\nelseif(x<0)\n if(y>5)\n output = x*y;\n elseif(y<3)\n output = y;\n" + " end\nend\n" + editorLayout "100 M4x1[205 227 1080 733]" + } + } + junction { + id 4 + position [23.5747 49.5747 7] + chart 2 + linkNode [2 0 0] + subviewer 2 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 5 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 4 + intersection [7 0 -1 -1 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 2 + linkNode [2 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 2 + drawStyle SMART + executionOrder 1 + ssIdNumber 2 + } + data { + id 6 + ssIdNumber 7 + name "x" + linkNode [2 0 7] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 7 + ssIdNumber 5 + name "y" + linkNode [2 6 8] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 8 + ssIdNumber 6 + name "output" + linkNode [2 7 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 9 + name "f_unprovable/code" + machine 1 + chart 2 + } + target { + id 10 + name "sfun" + description "Default Simulink S-Function Target." + machine 1 + linkNode [1 0 0] + } +} diff --git a/PVS_theories/double.pvs b/PVS_theories/double.pvs new file mode 100644 index 0000000..ecf5037 --- /dev/null +++ b/PVS_theories/double.pvs @@ -0,0 +1,10 @@ +double: THEORY + +BEGIN +IMPORTING float@enumerated_type_defs +IMPORTING overload[2,53,192,1023,-1022,to_nearest] + +double: TYPE = {fp:fp_num|finite?(fp) OR infinite?(fp)} +double_finite: TYPE = {fp:fp_num|finite?(fp)} + +END double diff --git a/PVS_theories/fp_lemmas.prf b/PVS_theories/fp_lemmas.prf new file mode 100644 index 0000000..52d77a3 --- /dev/null +++ b/PVS_theories/fp_lemmas.prf @@ -0,0 +1,870 @@ +(fp_lemmas + (infinite_not_zero 0 + (infinite_not_zero-1 nil 3508077004 3508077087 + ("" (skolem!) + (("" (expand zero?) + (("" (lift-if) + (("" (case "finite?[b, p, E_max, E_min](x!1)") + (("1" (assert) nil nil) ("2" (assert) nil nil)) nil)) + nil)) + nil)) + nil) + unchecked + ((zero? const-decl "bool" IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (fp_num type-decl nil IEEE_854_values "float/") + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (above nonempty-type-eq-decl nil integers nil) + (> const-decl "bool" reals nil) + (bool nonempty-type-eq-decl nil booleans nil) + (int nonempty-type-eq-decl nil integers nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (rational nonempty-type-from-decl nil rationals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (real nonempty-type-from-decl nil reals nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (boolean nonempty-type-decl nil booleans nil) + (number nonempty-type-decl nil numbers nil)) + 83425 30 t shostak)) + (op_fin_inf_TCC1 0 + (op_fin_inf_TCC1-1 nil 3508071655 nil ("" (subtype-tcc) nil nil) + unchecked nil nil nil nil nil)) + (op_fin_inf 0 + (op_fin_inf-1 nil 3508071661 3508071905 + ("" (skosimp) + (("" (expand fp_op) + (("" (assert) + (("" (case "fp_round(apply(op!1, x!1, y!1), mode!1) = 0") + (("1" (assert) nil nil) + ("2" (assert) + (("2" (expand real_to_fp) + (("2" + (case "abs(fp_round(apply(op!1, x!1, y!1), mode!1)) >= + b ^ (1 + E_max)") + (("1" (assert) nil nil) + ("2" (assert) + (("2" (lift-if) (("2" (assert) nil nil)) nil)) nil) + ("3" (assert) + (("3" (lemma Base_values) (("3" (assert) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil) + ("3" (assert) + (("3" (lift-if) + (("3" (typepred "op!1") + (("3" (flatten) (("3" (assert) nil nil)) nil)) nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_op const-decl "fp_num" arithmetic_ops "float/") + (AND const-decl "[bool, bool -> bool]" booleans nil) + (OR const-decl "[bool, bool -> bool]" booleans nil) + (apply const-decl "real" arithmetic_ops "float/") + (zero? const-decl "bool" IEEE_854_values "float/") + (NOT const-decl "[bool -> bool]" booleans nil) + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (fp_num type-decl nil IEEE_854_values "float/") + (fp_ops type-decl nil enumerated_type_defs "float/") + (fp_round const-decl "real" real_to_fp "float/") + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (alpha formal-const-decl "integer" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (above nonempty-type-eq-decl nil integers nil) + (> const-decl "bool" reals nil) + (bool nonempty-type-eq-decl nil booleans nil) + (int nonempty-type-eq-decl nil integers nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (rational nonempty-type-from-decl nil rationals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rounding_mode type-decl nil enumerated_type_defs "float/") + (real nonempty-type-from-decl nil reals nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (= const-decl "[T, T -> boolean]" equalities nil) + (boolean nonempty-type-decl nil booleans nil) + (number nonempty-type-decl nil numbers nil) + (real_to_fp const-decl "fp_num" real_to_fp "float/") + (real_lt_is_strict_total_order name-judgement + "(strict_total_order?[real])" real_props nil) + (posrat_exp application-judgement "posrat" exponentiation nil) + (nnrat_exp application-judgement "nnrat" exponentiation nil) + (real_ge_is_total_order name-judgement "(total_order?[real])" + real_props nil) + (int_plus_int_is_int application-judgement "int" integers nil) + (>= const-decl "bool" reals nil) + (nonneg_real nonempty-type-eq-decl nil real_types nil) + (numfield nonempty-type-eq-decl nil number_fields nil) + (- const-decl "[numfield -> numfield]" number_fields nil) + (abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs + nil) + (/= const-decl "boolean" notequal nil) + (^ const-decl "real" exponentiation nil) + (+ const-decl "[numfield, numfield -> numfield]" number_fields + nil)) + 244314 320 t shostak)) + (op_add_inf_fin 0 + (op_add_inf_fin-1 nil 3508072296 3508072618 + ("" (skolem!) + (("" (expand XOR) + (("" (flatten) + (("" (assert) + (("" (lemma op_fin_inf) + (("" (inst?) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (inst?) + (("1" (case "finite?(y!1)") + (("1" (assert) nil nil) + ("2" (assert) + (("2" (expand fp_add) + (("2" (assert) + (("2" (expand fp_add_inf) + (("2" (propax) nil nil)) nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + ("2" (assert) + (("2" (expand fp_add) + (("2" (lift-if) + (("2" (typepred "x!1") + (("2" (typepred "y!1") + (("2" (assert) + (("2" (case "finite?(y!1)") + (("1" + (assert) + (("1" + (expand fp_add_inf) + (("1" (propax) nil nil)) + nil)) + nil) + ("2" (assert) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((XOR const-decl "bool" xor_def nil) + (rounding_mode type-decl nil enumerated_type_defs "float/") + (NOT const-decl "[bool -> bool]" booleans nil) + (fp_add const-decl "fp_num" IEEE_854_defs "float/") + (fp_add_inf const-decl "fp_num" infinity_arithmetic "float/") + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (bool nonempty-type-eq-decl nil booleans nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/") + (op_fin_inf formula-decl nil fp_lemmas nil)) + 321637 560 t shostak)) + (op_add_inf_fin_l 0 + (op_add_inf_fin_l-1 nil 3508073321 3508073471 + ("" (skosimp) + (("" (expand fp_add) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma op_fin_inf) + (("1" (inst?) (("1" (assert) nil nil)) nil)) nil)) + nil) + ("2" (assert) + (("2" (lift-if) + (("2" (typepred x!1) + (("2" (assert) + (("2" (expand fp_add_inf) (("2" (propax) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_add const-decl "fp_num" IEEE_854_defs "float/") + (fp_add_inf const-decl "fp_num" infinity_arithmetic "float/") + (rounding_mode type-decl nil enumerated_type_defs "float/") + (fp_ops type-decl nil enumerated_type_defs "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (zero? const-decl "bool" IEEE_854_values "float/") + (AND const-decl "[bool, bool -> bool]" booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (add? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (add adt-constructor-decl "(add?)" enumerated_type_defs "float/") + (op_fin_inf formula-decl nil fp_lemmas nil) + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (bool nonempty-type-eq-decl nil booleans nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/")) + 150011 180 t shostak)) + (op_add_inf_fin_r 0 + (op_add_inf_fin_r-1 nil 3508073533 3508073612 + ("" (skosimp) + (("" (expand fp_add) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma op_fin_inf) + (("1" (inst?) (("1" (assert) nil nil)) nil)) nil)) + nil) + ("2" (assert) + (("2" (expand fp_add_inf) + (("2" (typepred "x!1") (("2" (assert) nil nil)) nil)) nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_add const-decl "fp_num" IEEE_854_defs "float/") + (fp_add_inf const-decl "fp_num" infinity_arithmetic "float/") + (rounding_mode type-decl nil enumerated_type_defs "float/") + (fp_ops type-decl nil enumerated_type_defs "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (zero? const-decl "bool" IEEE_854_values "float/") + (AND const-decl "[bool, bool -> bool]" booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (add? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (add adt-constructor-decl "(add?)" enumerated_type_defs "float/") + (op_fin_inf formula-decl nil fp_lemmas nil) + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (bool nonempty-type-eq-decl nil booleans nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/")) + 79167 80 t shostak)) + (op_sub_inf_fin_l 0 + (op_sub_inf_fin_l-1 nil 3508075475 3508075554 + ("" (skosimp) + (("" (expand fp_sub) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma op_fin_inf) + (("1" (inst?) (("1" (assert) nil nil)) nil)) nil)) + nil) + ("2" (assert) + (("2" (typepred "x!1") + (("2" (assert) + (("2" (expand fp_sub_inf) (("2" (propax) nil nil)) nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_sub const-decl "fp_num" IEEE_854_defs "float/") + (fp_sub_inf const-decl "fp_num" infinity_arithmetic "float/") + (rounding_mode type-decl nil enumerated_type_defs "float/") + (fp_ops type-decl nil enumerated_type_defs "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (zero? const-decl "bool" IEEE_854_values "float/") + (AND const-decl "[bool, bool -> bool]" booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (sub? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (sub adt-constructor-decl "(sub?)" enumerated_type_defs "float/") + (op_fin_inf formula-decl nil fp_lemmas nil) + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (bool nonempty-type-eq-decl nil booleans nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/")) + 79640 100 t shostak)) + (op_sub_inf_fin_r 0 + (op_sub_inf_fin_r-1 nil 3508075559 3508075728 + ("" (skosimp) + (("" (expand fp_sub) + (("" (lift-if) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma "op_fin_inf") + (("1" (inst?) (("1" (assert) nil nil)) nil)) nil)) + nil) + ("2" (assert) + (("2" (typepred "x!1") + (("2" (assert) + (("2" (expand fp_sub_inf) + (("2" (assert) + (("2" (expand toggle_sign) (("2" (propax) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_sub const-decl "fp_num" IEEE_854_defs "float/") + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (fp_num type-decl nil IEEE_854_values "float/") + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (above nonempty-type-eq-decl nil integers nil) + (> const-decl "bool" reals nil) + (bool nonempty-type-eq-decl nil booleans nil) + (int nonempty-type-eq-decl nil integers nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (rational nonempty-type-from-decl nil rationals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (real nonempty-type-from-decl nil reals nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (boolean nonempty-type-decl nil booleans nil) + (number nonempty-type-decl nil numbers nil) + (op_fin_inf formula-decl nil fp_lemmas nil) + (sub adt-constructor-decl "(sub?)" enumerated_type_defs "float/") + (sub? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (NOT const-decl "[bool -> bool]" booleans nil) + (AND const-decl "[bool, bool -> bool]" booleans nil) + (zero? const-decl "bool" IEEE_854_values "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (fp_ops type-decl nil enumerated_type_defs "float/") + (rounding_mode type-decl nil enumerated_type_defs "float/") + (fp_sub_inf const-decl "fp_num" infinity_arithmetic "float/") + (minus_odd_is_odd application-judgement "odd_int" integers nil) + (toggle_sign const-decl "fp_num" IEEE_854_values "float/")) + 168687 120 t shostak)) + (op_mul_inf_fin_l 0 + (op_mul_inf_fin_l-1 nil 3508077223 3508077459 + ("" (skosimp) + (("" (expand fp_mul) + (("" (lift-if) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma op_fin_inf) + (("1" (inst?) (("1" (assert) nil nil)) nil)) nil)) + nil) + ("2" (assert) + (("2" (typepred "x!1") + (("2" (assert) + (("2" (expand fp_mul_inf) + (("2" (lift-if) + (("2" (assert) + (("2" (typepred "x!1") + (("2" (assert) + (("2" (typepred "y!1") + (("2" (assert) + (("2" + (lemma infinite_not_zero) + (("2" + (assert) + (("2" + (inst -1 "x!1") + (("2" (assert) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_mul const-decl "fp_num" IEEE_854_defs "float/") + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (fp_num type-decl nil IEEE_854_values "float/") + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (above nonempty-type-eq-decl nil integers nil) + (> const-decl "bool" reals nil) + (bool nonempty-type-eq-decl nil booleans nil) + (int nonempty-type-eq-decl nil integers nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (rational nonempty-type-from-decl nil rationals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (real nonempty-type-from-decl nil reals nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (boolean nonempty-type-decl nil booleans nil) + (number nonempty-type-decl nil numbers nil) + (op_fin_inf formula-decl nil fp_lemmas nil) + (mult adt-constructor-decl "(mult?)" enumerated_type_defs "float/") + (mult? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (fp_ops type-decl nil enumerated_type_defs "float/") + (zero? const-decl "bool" IEEE_854_values "float/") + (NOT const-decl "[bool -> bool]" booleans nil) + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (AND const-decl "[bool, bool -> bool]" booleans nil) + (rounding_mode type-decl nil enumerated_type_defs "float/") + (fp_mul_inf const-decl "fp_num" infinity_arithmetic "float/") + (infinite_not_zero formula-decl nil fp_lemmas nil)) + 235297 130 t shostak)) + (op_mul_inf_fin_r 0 + (op_mul_inf_fin_r-1 nil 3508076503 3508077221 + ("" (skosimp) + (("" (expand fp_mul) + (("" (lift-if) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma op_fin_inf) + (("1" (inst?) (("1" (assert) nil nil)) nil)) nil)) + nil) + ("2" (assert) + (("2" (typepred x!1) + (("2" (assert) + (("2" (expand fp_mul_inf) + (("2" (lift-if) + (("2" (typepred "y!1") + (("2" (simplify) + (("2" (lemma infinite_not_zero) + (("2" (inst -1 "x!1") + (("2" (assert) nil nil)) nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((infinite_not_zero formula-decl nil fp_lemmas nil) + (fp_mul_inf const-decl "fp_num" infinity_arithmetic "float/") + (rounding_mode type-decl nil enumerated_type_defs "float/") + (AND const-decl "[bool, bool -> bool]" booleans nil) + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (zero? const-decl "bool" IEEE_854_values "float/") + (fp_ops type-decl nil enumerated_type_defs "float/") + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (mult? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (mult adt-constructor-decl "(mult?)" enumerated_type_defs "float/") + (op_fin_inf formula-decl nil fp_lemmas nil) + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (bool nonempty-type-eq-decl nil booleans nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/") + (fp_mul const-decl "fp_num" IEEE_854_defs "float/")) + 342 100 t shostak)) + (op_div_inf_fin_l 0 + (op_div_inf_fin_l-1 nil 3508078503 3508078581 + ("" (skosimp) + (("" (expand fp_div) + (("" (case "finite?(x!1)") + (("1" (assert) + (("1" (lemma op_fin_inf) + (("1" (assert) (("1" (inst?) (("1" (assert) nil nil)) nil)) + nil)) + nil)) + nil) + ("2" (assert) + (("2" (typepred "x!1") + (("2" (assert) + (("2" (expand fp_div_inf) (("2" (propax) nil nil)) nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_div const-decl "fp_num" IEEE_854_defs "float/") + (fp_div_inf const-decl "fp_num" infinity_arithmetic "float/") + (div adt-constructor-decl "(div?)" enumerated_type_defs "float/") + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (fp_ops type-decl nil enumerated_type_defs "float/") + (zero? const-decl "bool" IEEE_854_values "float/") + (NOT const-decl "[bool -> bool]" booleans nil) + (AND const-decl "[bool, bool -> bool]" booleans nil) + (rounding_mode type-decl nil enumerated_type_defs "float/") + (op_fin_inf formula-decl nil fp_lemmas nil) + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (bool nonempty-type-eq-decl nil booleans nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (OR const-decl "[bool, bool -> bool]" booleans nil) + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/")) + 78451 90 t shostak)) + (op_div_inf_fin_r 0 + (op_div_inf_fin_r-1 nil 3508078320 3508516292 + ("" (skolem!) + (("" (typepred y!1) + (("" (typepred x!1) + (("" (expand fp_div) + (("" (lift-if) + (("" (case "finite?(y!1)") + (("1" (assert) + (("1" (lemma "op_fin_inf") + (("1" (inst -1 "mode!1" "y!1" "x!1" "div") nil nil)) + nil)) + nil) + ("2" (assert) + (("2" (flatten) + (("2" (expand fp_div_inf) (("2" (propax) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + proved + ((infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (fp_num type-decl nil IEEE_854_values "float/") + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (above nonempty-type-eq-decl nil integers nil) + (> const-decl "bool" reals nil) + (int nonempty-type-eq-decl nil integers nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (rational nonempty-type-from-decl nil rationals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (real nonempty-type-from-decl nil reals nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number nonempty-type-decl nil numbers nil) + (OR const-decl "[bool, bool -> bool]" booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (bool nonempty-type-eq-decl nil booleans nil) + (boolean nonempty-type-decl nil booleans nil) + (fp_div const-decl "fp_num" IEEE_854_defs "float/") + (op_fin_inf formula-decl nil fp_lemmas nil) + (div adt-constructor-decl "(div?)" enumerated_type_defs "float/") + (div? adt-recognizer-decl "[fp_ops -> boolean]" + enumerated_type_defs "float/") + (IMPLIES const-decl "[bool, bool -> bool]" booleans nil) + (fp_ops type-decl nil enumerated_type_defs "float/") + (rounding_mode type-decl nil enumerated_type_defs "float/") + (fp_div_inf const-decl "fp_num" infinity_arithmetic "float/") + (AND const-decl "[bool, bool -> bool]" booleans nil) + (zero? const-decl "bool" IEEE_854_values "float/")) + 139965 80 t shostak)) + (op_sqrt_inf_fin 0 + (op_sqrt_inf_fin-1 nil 3508077679 3508078174 + ("" (skosimp) + (("" (expand fp_sqrt) + (("" (lift-if) + (("" (assert) + (("" (typepred "x!1") + (("" (assert) + (("" (split) + (("1" (flatten) + (("1" (assert) + (("1" (case "zero?(x!1)") + (("1" (assert) nil nil) + ("2" (assert) + (("2" (expand real_to_fp) + (("2" + (case "abs(fp_round(sqrt(value(x!1)), mode!1)) >= b ^ (1 + E_max)") + (("1" (assert) nil nil) + ("2" (assert) + (("2" + (case + "abs(fp_round(sqrt(value(x!1)), mode!1)) < b ^ E_min") + (("1" (assert) nil nil) + ("2" (assert) nil nil)) + nil)) + nil) + ("3" (assert) (("3" (assert) nil nil)) + nil) + ("4" (assert) + (("4" + (hide 2 3 4) + (("4" + (lemma value_positive) + (("4" + (inst -1 "x!1") + (("4" (assert) nil nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + ("2" (flatten) (("2" (assert) nil nil)) nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil)) + nil) + unchecked + ((fp_sqrt const-decl "fp_num" IEEE_854_defs "float/") + (zero? const-decl "bool" IEEE_854_values "float/") + (real_to_fp const-decl "fp_num" real_to_fp "float/") + (value_positive formula-decl nil IEEE_854_values "float/") + (real_gt_is_strict_total_order name-judgement + "(strict_total_order?[real])" real_props nil) + (real_lt_is_strict_total_order name-judgement + "(strict_total_order?[real])" real_props nil) + (nil name-judgement + "[integer, nonneg_real -> digits[b, p, E_max, E_min]]" fp_lemmas + nil) + (< const-decl "bool" reals nil) + (posrat_exp application-judgement "posrat" exponentiation nil) + (nnrat_exp application-judgement "nnrat" exponentiation nil) + (real_ge_is_total_order name-judgement "(total_order?[real])" + real_props nil) + (int_plus_int_is_int application-judgement "int" integers nil) + (nonneg_real nonempty-type-eq-decl nil real_types nil) + (numfield nonempty-type-eq-decl nil number_fields nil) + (- const-decl "[numfield -> numfield]" number_fields nil) + (abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs + nil) + (rounding_mode type-decl nil enumerated_type_defs "float/") + (alpha formal-const-decl "integer" fp_lemmas nil) + (fp_round const-decl "real" real_to_fp "float/") + (* const-decl "[numfield, numfield -> numfield]" number_fields nil) + (sqrt const-decl "{nnz | nnz * nnz = nnx}" sqrt "reals/") + (value const-decl "real" IEEE_854_values "float/") + (/= const-decl "boolean" notequal nil) + (^ const-decl "real" exponentiation nil) + (+ const-decl "[numfield, numfield -> numfield]" number_fields nil) + (boolean nonempty-type-decl nil booleans nil) + (bool nonempty-type-eq-decl nil booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (OR const-decl "[bool, bool -> bool]" booleans nil) + (AND const-decl "[bool, bool -> bool]" booleans nil) + (number nonempty-type-decl nil numbers nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (> const-decl "bool" reals nil) + (above nonempty-type-eq-decl nil integers nil) + (b formal-const-decl "above(1)" fp_lemmas nil) + (p formal-const-decl "above(1)" fp_lemmas nil) + (integer nonempty-type-from-decl nil integers nil) + (E_max formal-const-decl "integer" fp_lemmas nil) + (E_min formal-const-decl "{i: integer | E_max > i}" fp_lemmas nil) + (fp_num type-decl nil IEEE_854_values "float/") + (finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values + "float/") + (= const-decl "[T, T -> boolean]" equalities nil) + (>= const-decl "bool" reals nil) + (nat nonempty-type-eq-decl nil naturalnumbers nil) + (sign_rep type-eq-decl nil enumerated_type_defs "float/") + (sign adt-accessor-decl "[(finite?) -> sign_rep]" IEEE_854_values + "float/") + (pos const-decl "sign_rep" enumerated_type_defs "float/") + (infinite? adt-recognizer-decl "[fp_num -> boolean]" + IEEE_854_values "float/") + (i_sign adt-accessor-decl "[(infinite?) -> sign_rep]" + IEEE_854_values "float/")) + 494694 470 t shostak))) + diff --git a/PVS_theories/fp_lemmas.pvs b/PVS_theories/fp_lemmas.pvs new file mode 100644 index 0000000..2c7edfd --- /dev/null +++ b/PVS_theories/fp_lemmas.pvs @@ -0,0 +1,39 @@ +fp_lemmas + [b,p:above(1), + alpha,E_max:integer, + E_min:{i:integer|E_max>i}]:THEORY + +BEGIN + + +IMPORTING float@IEEE_854_defs[b,p,alpha,E_max,E_min] + +infinite_not_zero: LEMMA FORALL (x:fp_num): infinite?(x) => NOT zero?(x) + +%finite_mul_1: LEMMA FORALL(x:{fp:fp_num|finite?(fp)},mode:rounding_mode): finite?(fp_mul(x,real_to_fp(1),mode)) + +op_fin_inf: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp)}, y:{fp:fp_num| finite?(fp)},op:{op:fp_ops|zero?(y) OR (zero?(x) AND zero?(y)) => NOT div?(op)}): +finite?(fp_op(op,x,y,mode)) OR infinite?(fp_op(op,x,y,mode)) + +op_add_inf_fin: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp) OR infinite?(fp)}): infinite?(x) XOR infinite?(y) => finite?(fp_add(x,y,mode)) OR infinite?(fp_add(x,y,mode)) + +op_add_inf_fin_l: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp)}): finite?(fp_add(x,y,mode)) OR infinite?(fp_add(x,y,mode)) + +op_add_inf_fin_r: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp)}): finite?(fp_add(y,x,mode)) OR infinite?(fp_add(y,x,mode)) + +op_sub_inf_fin_l: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp)}): finite?(fp_sub(x,y,mode)) OR infinite?(fp_sub(x,y,mode)) + +op_sub_inf_fin_r: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp)}): finite?(fp_sub(y,x,mode)) OR infinite?(fp_sub(y,x,mode)) + +op_mul_inf_fin_l: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp) AND (infinite?(x) => NOT zero?(fp))}): finite?(fp_mul(y,x,mode)) OR infinite?(fp_mul(y,x,mode)) + +op_mul_inf_fin_r: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp) AND (infinite?(x) => NOT zero?(fp))}): finite?(fp_mul(x,y,mode)) OR infinite?(fp_mul(x,y,mode)) + +op_div_inf_fin_l: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:{fp:fp_num| finite?(fp) AND NOT zero?(fp)}): finite?(fp_div(x,y,mode)) OR infinite?(fp_div(x,y,mode)) + +op_div_inf_fin_r: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|finite?(fp) AND NOT zero?(fp)},y:{fp:fp_num| finite?(fp) OR infinite?(fp)}): finite?(fp_div(y,x,mode)) OR infinite?(fp_div(y,x,mode)) + +op_sqrt_inf_fin: LEMMA FORALL (mode:rounding_mode, x:{fp:fp_num|(finite?(fp) AND sign(fp) = pos) OR (infinite?(fp) AND i_sign(fp) = pos)}): finite?(fp_sqrt(x,mode)) OR infinite?(fp_sqrt(x,mode)) + + +END fp_lemmas diff --git a/PVS_theories/matlab_types.pvs b/PVS_theories/matlab_types.pvs new file mode 100644 index 0000000..71d6a45 --- /dev/null +++ b/PVS_theories/matlab_types.pvs @@ -0,0 +1,14 @@ +matlab_types:THEORY +BEGIN +single: TYPE = real +double: TYPE = real +int8: TYPE = {x:int | x>= -128 & x <= 127} +int16: TYPE = {x:int | x>=-32768 & x<= 32767} +int32: TYPE = {x:int | x>=-2147483648 & x <= 2147483647} +uint8: TYPE = {x:int | x>=0 & x<= 255} +uint16: TYPE = {x:int | x>=0 & x<= 65535} +uint32: TYPE = {x:int | x>=0 & x<= 4294967295} +boolean: TYPE = bool + + +END matlab_types diff --git a/PVS_theories/overload.prf b/PVS_theories/overload.prf new file mode 100644 index 0000000..cbe44f9 --- /dev/null +++ b/PVS_theories/overload.prf @@ -0,0 +1,93 @@ +(overload + (lessp_TCC1 0 + (lessp_TCC1-1 nil 3508513172 3508513284 + ("" (skolem!) (("" (grind) nil nil)) nil) proved + ((posrat_exp application-judgement "posrat" exponentiation nil) + (nnrat_exp application-judgement "nnrat" exponentiation nil) + (minus_odd_is_odd application-judgement "odd_int" integers nil) + (minus_real_is_real application-judgement "real" reals nil) + (real_to_fp const-decl "fp_num" real_to_fp "float/") + (number nonempty-type-decl nil numbers nil) + (boolean nonempty-type-decl nil booleans nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (numfield nonempty-type-eq-decl nil number_fields nil) + (- const-decl "[numfield -> numfield]" number_fields nil) + (sign_of const-decl "sign_rep" fp_round_aux "float/") + (pos const-decl "sign_rep" enumerated_type_defs "float/") + (neg const-decl "sign_rep" enumerated_type_defs "float/") + (^ const-decl "real" exponentiation nil) + (expt def-decl "real" exponentiation nil) + (abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs + nil) + (real_ge_is_total_order name-judgement "(total_order?[real])" + real_props nil) + (real_lt_is_strict_total_order name-judgement + "(strict_total_order?[real])" real_props nil) + (posint_exp application-judgement "posint" exponentiation nil) + (posint_plus_nnint_is_posint application-judgement "posint" + integers nil) + (odd_plus_odd_is_even application-judgement "even_int" integers + nil) + (posnat_expt application-judgement "posnat" exponentiation nil) + (posrat_div_posrat_is_posrat application-judgement "posrat" + rationals nil) + (posint_times_posint_is_posint application-judgement "posint" + integers nil) + (even_times_int_is_even application-judgement "even_int" integers + nil) + (mult_divides1 application-judgement "(divides(n))" divides nil) + (mult_divides2 application-judgement "(divides(m))" divides nil) + (even_minus_odd_is_odd application-judgement "odd_int" integers + nil) + (odd_minus_odd_is_even application-judgement "even_int" integers + nil) + (minus_nzint_is_nzint application-judgement "nzint" integers nil) + (minus_even_is_even application-judgement "even_int" integers nil)) + 18355 5670 t nil)) + (expt_TCC1 0 + (expt_TCC1-1 nil 3508513172 3508513172 ("" (subtype-tcc) nil nil) + proved + ((boolean nonempty-type-decl nil booleans nil) + (bool nonempty-type-eq-decl nil booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (number nonempty-type-decl nil numbers nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (>= const-decl "bool" reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (nat nonempty-type-eq-decl nil naturalnumbers nil) + (int_minus_int_is_int application-judgement "int" integers nil) + (real_ge_is_total_order name-judgement "(total_order?[real])" + real_props nil)) + 17 20 nil nil)) + (expt_TCC2 0 + (expt_TCC2-1 nil 3508513172 3508513172 ("" (termination-tcc) nil nil) + proved nil 6 0 nil nil)) + (caret_TCC1 0 + (caret_TCC1-1 nil 3508513172 3508513172 ("" (subtype-tcc) nil nil) + proved + ((boolean nonempty-type-decl nil booleans nil) + (bool nonempty-type-eq-decl nil booleans nil) + (NOT const-decl "[bool -> bool]" booleans nil) + (number nonempty-type-decl nil numbers nil) + (number_field_pred const-decl "[number -> boolean]" number_fields + nil) + (number_field nonempty-type-from-decl nil number_fields nil) + (real_pred const-decl "[number_field -> boolean]" reals nil) + (real nonempty-type-from-decl nil reals nil) + (rational_pred const-decl "[real -> boolean]" rationals nil) + (rational nonempty-type-from-decl nil rationals nil) + (integer_pred const-decl "[rational -> boolean]" integers nil) + (int nonempty-type-eq-decl nil integers nil) + (minus_int_is_int application-judgement "int" integers nil) + (real_ge_is_total_order name-judgement "(total_order?[real])" + real_props nil)) + 16 20 nil nil))) + diff --git a/PVS_theories/overload.pvs b/PVS_theories/overload.pvs new file mode 100644 index 0000000..2339c39 --- /dev/null +++ b/PVS_theories/overload.pvs @@ -0,0 +1,60 @@ +overload[b,p:above(1), + alpha,E_max:integer, + E_min:{i:integer|E_max>i}, +(IMPORTING float@enumerated_type_defs)r_mode:rounding_mode]:THEORY + +BEGIN + +IMPORTING fp_lemmas[b,p,alpha,E_max,E_min] + +x,y: VAR fp_num +n:VAR nat + +-(x,y):fp_num = fp_sub(x,y,r_mode); ++(x,y):fp_num = fp_add(x,y,r_mode); +*(x,y):fp_num = fp_mul(x,y,r_mode); +/(x,y):fp_num = fp_div(x,y,r_mode); +sqrt(x):fp_num = fp_sqrt(x,r_mode); +-(x):fp_num = toggle_sign(x); + +-(x:fp_num,y:real):fp_num = x-real_to_fp(y); ++(x:fp_num,y:real):fp_num = x+real_to_fp(y); +*(x:fp_num,y:real):fp_num = x*real_to_fp(y); +/(x:fp_num,y:real):fp_num = x/real_to_fp(y); + +-(x:real,y:fp_num):fp_num = real_to_fp(x)-y; ++(x:real,y:fp_num):fp_num = real_to_fp(x)+y; +*(x:real,y:fp_num):fp_num = real_to_fp(x)*y; +/(x:real,y:fp_num):fp_num = real_to_fp(x)/y; + + +<(x,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = n_value(x) < n_value(y); +<=(x,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = n_value(x) <= n_value(y); +>(x,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = n_value(x) > n_value(y); +>=(x,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = n_value(x) >= n_value(y); +=(x,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = n_value(x) = n_value(y); +/=(x,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = n_value(x) /= n_value(y); + +<(x:real,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = real_to_fp(x) < y; +<=(x:real,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = real_to_fp(x) <= y; +>(x:real,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = real_to_fp(x) > y; +>=(x:real,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = real_to_fp(x) >= y; +=(x:real,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = real_to_fp(x) = y; +/=(x:real,y:{fp:fp_num|finite?(fp) OR infinite?(fp)}):bool = real_to_fp(x) /= y; + +<(x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:real):bool = x < real_to_fp(y); +<=(x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:real):bool = x <= real_to_fp(y); +>(x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:real):bool = x > real_to_fp(y); +>=(x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:real):bool = x >= real_to_fp(y); +=(x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:real):bool = x = real_to_fp(y); +/=(x:{fp:fp_num|finite?(fp) OR infinite?(fp)},y:real):bool = x /= real_to_fp(y); + +expt(x,n): RECURSIVE fp_num = + IF n = 0 THEN real_to_fp(1) + ELSE x * expt(x, n-1) + ENDIF +MEASURE n; + +^(x: fp_num, i:int): fp_num + = IF i >= 0 THEN expt(x, i) ELSE real_to_fp(1)/expt(x, -i) ENDIF +END overload diff --git a/PVS_theories/single.pvs b/PVS_theories/single.pvs new file mode 100644 index 0000000..15248f7 --- /dev/null +++ b/PVS_theories/single.pvs @@ -0,0 +1,11 @@ +single: THEORY + +BEGIN + +IMPORTING float@enumerated_type_defs +IMPORTING overload[2,24,192,127,-126,to_nearest] + +single: TYPE = {fp:fp_num|finite?(fp) OR infinite?(fp)} +single_finite: TYPE = {fp:fp_num|finite?(fp)} + +END single diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..ae47750 --- /dev/null +++ b/README.txt @@ -0,0 +1,22 @@ +Tabular Expression Toolbox Version 0.7.4 + +Installation +============ + +Unzip contents and add the folder on your matlab path via menu options: + +File -> Set Path. + +See included help files for detailed documentation or go to + +http://www.cas.mcmaster.ca/~lawford/TET + +All code copyright: +Colin Eles, McMaster Centre for Software Certification, 2011. +Matthew Dawson, McMaster Centre for Software Certification, 2012-2014. + +For more information about the Tabular Expression Toolbox contact: +Professor Mark Lawford +Associate Director +McMaster Centre for Software Certification +lawford (at) mcmaster.ca diff --git a/TTdiag.m b/TTdiag.m new file mode 100644 index 0000000..10c27e6 --- /dev/null +++ b/TTdiag.m @@ -0,0 +1,164 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function TTdiag(varargin) + +orig_gcbh = gcbh; + + +Action = varargin{1}; + + + +switch Action, + case 'Open', + Mode = varargin{2}; + + if 2 ~= nargin + DAStudio.warning('improper function use'); + end + blockHandleTTTopMask = orig_gcbh; + switch Mode, + + case 'Simulink' + LocalOpenBlockFcn(blockHandleTTTopMask,1); + case 'Matlab' + LocalOpenBlockFcn([],0); + end + + case 'Close', + blockHandleTTTopMask = orig_gcbh; + LocalCloseBlockFcn(blockHandleTTTopMask); + + case 'Copy', + blockHandleTTTopMask = orig_gcbh; + LocalCopyBlockFcn(blockHandleTTTopMask); + + case 'Load', + if 2 ~= nargin + DAStudio.warning('improper function use'); + end + file = varargin{2}; + try + data = importdata(file); + gui = GUI([],0); + gui.setData(data); + gui.init(); + catch exception + msgbox(exception.identifier); + end + case 'Delete', + blockHandleTTTopMask = orig_gcbh; + data = get_param(blockHandleTTTopMask,'UserData'); + if isempty(data) + return + end + if ~data.valid + errordlg(... + DAStudio.message('Block Data has been corputed'),... + 'Error', 'modal'); + return + end + + if data.open && ishandle(data.fig) + delete(data.fig); + data.fig = []; + data.open = 0; + set_param(blockHandleTTTopMask,'UserData',data); + + end + + otherwise, + DAStudio.error('Simulink:dialog:UnknownAction',Action); + + + + + +end + +end + +function LocalCopyBlockFcn(blockHandleTTTopMask) +data = get(blockHandleTTTopMask,'UserData'); +if(~isempty(data)) + data_new = data.clone(blockHandleTTTopMask); + + set_param(blockHandleTTTopMask,'UserData',data_new); +end +end + +function LocalOpenBlockFcn(blockHandleTTTopMask,mode) +data = []; +if (mode == 1) + modelHandle = bdroot(blockHandleTTTopMask); + + + % check if the user is trying to open the block from the library + if strcmp(get_param(modelHandle,'Lock'), 'on') || strcmp(get_param(blockHandleTTTopMask,'LinkStatus'),'implicit') + + errordlg(... + DAStudio.message('can not open Model Locked, Add to new model to use'),... + 'Error', 'modal'); + return + end + + + + data = get_param(blockHandleTTTopMask,'UserData'); +end + +if isempty(data) + data = Data(); + data.init(); + +else + if ~data.valid + errordlg(... + DAStudio.message('Block Data has been corputed'),... + 'Error', 'modal'); + return + end + if data.open + if ishghandle(data.fig) + figure(data.fig); + return + end + else + data.upgrade + end + +end +if mode == 1 + gui = GUI(blockHandleTTTopMask,1); +elseif mode == 0 + gui = GUI([],0); +end + +gui.setData(data); +gui.init(); +if(mode == 1) + set_param(blockHandleTTTopMask,'UserData',data); + set_param(blockHandleTTTopMask, 'UserDataPersistent', 'on'); +end + +end + +function LocalCloseRequestBlockFcn(blockHandleTTTopMask) + +modelHandle = bdroot(blockHandleTTTopMask); + +data = get_param(blockHandleTTTopMask,'UserData'); + + + +if ~isempty(data) + if data.open + delete(data.fig); + end +end +%set_param(gui.fig,'Visible','off') + +end + + + diff --git a/TableLibrary.mdl b/TableLibrary.mdl new file mode 100644 index 0000000..810af97 --- /dev/null +++ b/TableLibrary.mdl @@ -0,0 +1,679 @@ +Library { + Name "TableLibrary" + Version 7.5 + MdlSubVersion 0 + SavedCharacterEncoding "UTF-8" + LibraryType "BlockLibrary" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + MaxMDLFileLineLength 120 + Created "Thu Apr 8 11:30:49 2010" + Creator "elesc" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "colin" + ModifiedDateFormat "%" + LastModifiedDate "Tue Sep 21 13:08:03 2010" + RTWModifiedTimeStamp 206975269 + ModelVersionFormat "1.%" + ConfigurationManager "None" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + RecordCoverage off + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "Warning" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 6 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 19 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "SFDataObjDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "SupportNonFinite" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "PortableWordSizes" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] " + } + PropName "ConfigurationSets" + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + } + System { + Name "TableLibrary" + Location [193, 302, 773, 562] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 8 + Block { + BlockType SubSystem + Name "Tabular Expression" + SID 1 + Ports [1] + Position [70, 32, 235, 98] + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'Input');\ntext(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'ce" + "nter')\ncolor('red')\ntext(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "Tabular Expression" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "In1" + SID 2 + Position [110, 103, 140, 117] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + } + } + } +} diff --git a/TableToolMatlab.m b/TableToolMatlab.m new file mode 100644 index 0000000..77b2e2e --- /dev/null +++ b/TableToolMatlab.m @@ -0,0 +1,9 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [ output_args ] = TableToolMatlab( input_args ) +%TABLETOOLMATLAB Summary of this function goes here +% Detailed explanation goes here + +TTdiag('Open','Matlab'); +end + diff --git a/Tests/Untitled.m b/Tests/Untitled.m new file mode 100644 index 0000000..79d2a1a --- /dev/null +++ b/Tests/Untitled.m @@ -0,0 +1,7 @@ +function [ output_args ] = Untitled( input_args ) +%UNTITLED Summary of this function goes here +% Detailed explanation goes here + + +end + diff --git a/Tests/testData.m b/Tests/testData.m new file mode 100644 index 0000000..23d7e91 --- /dev/null +++ b/Tests/testData.m @@ -0,0 +1,45 @@ +function test_suite = testData +initTestSuite; +end + +function testConstructor + d = Data; + assertEqual(class(d),'Data'); +end + +function testInit + d = Data; + d.init; + assertEqual(size(d.Grid2.cells,2),1); + assertEqual(size(d.Grid1.cells,2),1); + assertEqual(size(d.Grid0.Cells,2),1); +end + +function testClone + d = Data; + d.init; + d.function_name = 'test_name'; + d.function_inputs = 'input_test'; + d.checked = 1; + d.Grid1.cells(1).cond_text = 'test_cond'; + d2 = d.clone([]); + assertEqual(d2.function_name,''); + assertEqual(d2.function_inputs,d.function_inputs); + assertEqual(d2.Grid1.cells(1).cond_text,'test_cond'); +end + +function testClone2 + d = Data; + d2 = d.clone; + assertEqual(d2,[]); +end + +function testSave + d = Data; + d.init; + d.function_name = 'test_file'; + d.save; + assertEqual(exist('test_file.table'),2); + delete('test_file.table'); +end + \ No newline at end of file diff --git a/Tests/testEMLGenerator.m b/Tests/testEMLGenerator.m new file mode 100644 index 0000000..acabc29 --- /dev/null +++ b/Tests/testEMLGenerator.m @@ -0,0 +1,105 @@ + +function test_suite = testEMLGenerator +initTestSuite; +end + + +function testparse_inputs + input_string = 'x'; + ri = EMLGenerator.parse_inputs(input_string); + + assertEqual(char(ri{1}(1)),'x'); + input_string = 'x:boolean'; + ri = EMLGenerator.parse_inputs(input_string); + assertEqual(char(ri{1}(1)),'x'); + assertEqual(char(ri{1}(2)),'boolean'); + input_string = 'a:boolean,c,d:{x:real|x<2}'; + ri = EMLGenerator.parse_inputs(input_string); + assertEqual(char(ri{1}(1)),'a'); + assertEqual(char(ri{1}(2)),'boolean'); + assertEqual(char(ri{2}(1)),'c'); + assertEqual(char(ri{3}(1)),'d'); + assertEqual(char(ri{3}(2)),'{x:real|x<2}'); + + input_string = 'rewq$32:fwer'; + ri = EMLGenerator.parse_inputs(input_string); + assertEqual(char(ri{1}(2)),'error'); + + input_string = ',,,,'; + ri = EMLGenerator.parse_inputs(input_string); + assertEqual(char(ri{1}(2)),'error'); + +end + +function testpreamble + d = Data; + d.init; + d.function_name = 'test'; + d.function_inputs = 'x'; + d.Grid1.cells(1).cond_text = 'x>1'; + d.Grid1.new_Cell; + d.Grid1.cells(2).cond_text = 'x<=1'; + d.Grid0.Cells(1).result_text = '1'; + d.Grid0.Cells(2).result_text = '2'; + E = EMLGenerator(d); + pre = E.generate_preamble; + assertEqual(pre,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\n')); + + d.function_name = 'test2'; + pre = E.generate_preamble; + assertEqual(pre,sprintf('function output = test2(x)\n%%%%#eml\noutput=(1);\n')); + + d.function_name = 'test3'; + E.set_datatype('logical'); + pre = E.generate_preamble; + + assertEqual(pre,sprintf('function output = test3(x)\n%%%%#eml\noutput=logical(1);\n')); + + +end + +function testcode_gen + d = Data; + d.init; + d.function_name = 'test'; + d.function_inputs = 'x'; + d.Grid1.cells(1).cond_text = 'x>1'; + d.Grid1.new_Cell; + d.Grid1.cells(2).cond_text = 'x<=1'; + d.Grid0.Cells(1).result_text = '1'; + d.Grid0.Cells(2).result_text = '2'; + E = EMLGenerator(d); + code = E.generate_eml_code; + assertEqual(code,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\nif(x>1)\n output = (1);\nelseif(x<=1)\n output = (2);\nend\n')); + + + d.Grid1.cells(1).cond_text = 'x+1<2'; + d.Grid1.cells(2).cond_text = 'x-1>6'; + code = E.generate_eml_code; + assertEqual(code,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\nif(x+1<2)\n output = (1);\nelseif(x-1>6)\n output = (2);\nend\n')); + + + d.Grid2.new_Cell; + d.Grid2.cells(1).cond_text = 'x+1<2'; + d.Grid2.cells(2).cond_text = 'x-1>6'; + d.Grid1.cells(1).cond_text = 'y<1'; + d.Grid1.cells(2).cond_text = 'y>=1'; + d.Grid0.Cells(3).result_text = '3'; + d.Grid0.Cells(4).result_text = '4'; + code = E.generate_eml_code; + assertEqual(code,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\nif(x+1<2)\n if(y<1)\n output = (1);\n elseif(y>=1)\n output = (2);\n end\nelseif(x-1>6)\n if(y<1)\n output = (3);\n elseif(y>=1)\n output = (4);\n end\nend\n')); + + +% d.function_name = 'test2'; +% pre = E.generate_preamble; +% assertEqual(pre,sprintf('function output = test2(x)\n%%%%#eml\noutput=(1);\n')); +% +% d.function_name = 'test3'; +% E.set_datatype('logical'); +% pre = E.generate_preamble; +% +% assertEqual(pre,sprintf('function output = test3(x)\n%%%%#eml\noutput=logical(1);\n')); + + +end + diff --git a/Tests/testGUI.m b/Tests/testGUI.m new file mode 100644 index 0000000..32d7644 --- /dev/null +++ b/Tests/testGUI.m @@ -0,0 +1,2 @@ +function test_suite = testGUI +initTestSuite; \ No newline at end of file diff --git a/check_system.m b/check_system.m new file mode 100644 index 0000000..f83f24e --- /dev/null +++ b/check_system.m @@ -0,0 +1,29 @@ +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [ output_args ] = check_system(system) +%UNTITLED Summary of this function goes here +% Detailed explanation goes here +blocks = find_system(system,'MaskDescription','Table Block'); +msg = []; +for i = 1:size(blocks,1) + if ~strncmp(blocks(i),'TableLibrary',12) + block_data = get_param(char(blocks(i)),'UserData'); + if ~isempty(block_data) + PVS = PVS_checker(block_data); + [check,result] = PVS.pvs_check; + if (check == 1) + msg = [msg char(blocks(i)) ' is valid' sprintf('\n')]; + + else + msg = [msg char(blocks(i)) ' is not valid' sprintf('\n')]; + end + block_data.checked = check; + TableBlock.set_block_display(char(blocks(i)),block_data.checked); + + end + end +end +msgbox(msg); + +end + diff --git a/demo_table.cvc b/demo_table.cvc new file mode 100644 index 0000000..b36de24 --- /dev/null +++ b/demo_table.cvc @@ -0,0 +1,13 @@ +x:REAL; +ECHO "begin1"; +PUSH; +QUERY (NOT ( (x>1) AND (x<1) ) AND +NOT ( (x>1) AND (x = 1) ) AND +NOT ( (x<1) AND (x = 1) )); +POP; +ECHO "end1"; +ECHO "begin2"; +PUSH; +QUERY ((x>1) OR (x<1) OR (x = 1)); +POP; +ECHO "end2"; diff --git a/html/TT_gs_over.m b/html/TT_gs_over.m new file mode 100644 index 0000000..23f2c55 --- /dev/null +++ b/html/TT_gs_over.m @@ -0,0 +1,126 @@ +%% Product Overview +% This product allows users to interactively design a tabular expression. +% The resusulting function can be saved as a Simulink block or to a Matlab +% m-file. Tabular Expressions can be proved to be disjoint and complete +% using the PVS theorem prover. This allows users to ensure that the table +% they are designing has covered all possible inputs and is deterministic. +% +%% Creating a new table +% To create a new table block locate the Tabular Expression block in the +% simulink library. +% +% <> +% +% Drag the Tabular Expression block to a new or existing model. +% +% <> +% +%% Table Tool Dialog +% To edit the functionality of the table double click on the block to bring +% up the Table Tool dialog. From this dialog you can create the layout for +% the table and edit the conditions and outputs for the function. +% +% <> +% +%% Example Table +% An example of a 2-dimensional table is shown below +% +% <> +% +% This table specifies a function with 3 inputs x, y, and z, and one +% output. Saving the table will generate the following embedded matlab +% code: +function output = demo_table(x,y,z) +%%#eml +if(x>0) + if(y>1) + if(z>1) + output = 1; + elseif(z<=1) + output = 5; + end + elseif(y<=1) + if(z>1) + output = 2; + elseif(z<=1) + output = 6; + end + end +elseif(x==0) + if(z>1) + output = 3; + elseif(z<=1) + output = 7; + end +elseif(x<0) + if(z>1) + output = 4; + elseif(z<=1) + output = 8; + end +end +%% +% If we go back and look at our model window we can see that our Tabular +% Expression block has updated based on our specified inputs and outputs. +% +% <> +% +%% Proving a Table +% +% Let us assume that a table designer has specified the following function +% table: +% +% <> +% +% In order for a tabular expression to be considered "proper" it must +% satisfy a *Completness* and *Disjointness* condition +% +% * Completness means that in the specification of a function we have +% considered all possible inputs in a condition cell. +% * Disjointness means that in the specification of a function all +% condition cells in a grid are pairwise disjoint, in other words for all +% possible inputs it is not the case that two conditions are true at the +% same time. +% +% We desire these properties to ensure that our function is total and is +% deterministic. A function that is not total or not deterministic can have undesired effects, potentially causing safety critical problems depending on the requirements of the software. +% The graphical layout of a table helps the designer to evaluate a table +% for these conditions. Some times it is a non-trivial problem to determine +% if these conditions have been meet, so we employ the use of a theorem +% proving software to mechanically prove the properties. +%% +% Consider our example table, the designer of this table has failed to +% consider the case when x is equal to 1, the completness condition is not +% satisfied. Clicking on the Typecheck button will start the proof and popup a +% process dialog as shown below: +% +% <> +% +% If the proof fails it will pop up a dialog giving the user some feedback +% of why the proof failed as seen in the next image. +% +% <> +% +% <> +% +% The Typecheck summary window will display the formula for which a proof +% was not found. If a proof fails PVS attempts to find a counter example. +% In this senario pvs has found that a counter example to the formula is x +% = 1. When a counter example is found the tool will give visual feedback +% on which conditions were true and which were false for that counter +% example. A condition coloured red indicates that the condition was false +% for the given counter example, a green colour indicates that a condition +% is true. For this example we can see that both possible conditions are +% false for the counter example indicating to the table designer that they +% failed to consider a case of the input. +% +% <> +% +% <> +% +% In the example above, the designer of the table has captured the case +% where x = 0 in both conditions of the table. The tool has highlighted +% both cells green to indicate to the user that for the counter example of +% x = 0 both of these conditions are true, the designer has failed to +% unambiguosly specify what should happen in this senario. +% diff --git a/html/TT_gs_ref.m b/html/TT_gs_ref.m new file mode 100644 index 0000000..ae9cdee --- /dev/null +++ b/html/TT_gs_ref.m @@ -0,0 +1,22 @@ +%% Tabular Expressions References +%% Tabular Expression Toolbox Publications +% * C. Eles and M. Lawford, "A tabular expression toolbox for Matlab/Simulink," NASA Formal Methods, LNCS Vol. 6617, pp. 494-499, Springer, 2011. +%% Background Information +% Tabular Expressions have been around for many years, below are some +% papers discussing some of the fundamentals behind tabular expressions. +% +% * Y. Jin and D. L. Parnas, "Defining the meaning of tabular mathematical +% expressions," Science of Computer Programming, Vol. 75, no. 11, pp. 980-1000, 2010. +% * Parnas, D.L., "Tabular Representation of Relations", CRL Report 260, +% McMaster University, Communications Research Laboratory, TRIO +% (Telecommunications Research Institute of Ontario), October 1992, 17 pgs. +% * R. Janicki, D.L. Parnas, and J. Zucker, "Tabular representations in +% relational documents," in in Relational Methods in Computer Science, pp. 184-196, Springer Verlag, 1996. +%% Tabular Expressions in Industry +% Tabular Expressions have been used in numerous industrial projects, below +% are some papers describing some of such projects. +% +% * A. Wassyng and M. Lawford, "Lessons learned from a successful +% implementation of formal methods in an industrial project," in FME 2003: International Symposium of Formal Methods Europe Proceedings (K. Araki, S. Gnesi, and D. Mandrioli, eds.), vol. 2805 of Lecture Notes in Computer Science, pp. 133-153, Springer-Verlag, Aug. 2003. +% * R. L. Baber, D. L. Parnas, S. A. Vilkomir, P. Harrison, and +% T. O'Connor, "Disciplined methods of software specification: A case study," in ITCC '05: Proceedings of the International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II, (Washington, DC, USA), pp. 428-437, IEEE Computer Society, 2005. diff --git a/html/TT_gs_req.m b/html/TT_gs_req.m new file mode 100644 index 0000000..d71fecc --- /dev/null +++ b/html/TT_gs_req.m @@ -0,0 +1,28 @@ +%% System Requirements +% +%% Matlab/Simulink +% +% * Tested with Matlab Simulink 2011b, 2011a, 2010a, 2009b +% +%% Table Checking +% * The tool supports checking of table completness and disjointness +% through the support of external tools +% * This tool will work with either or both of the tools installed. +% * It is recommened that both tools be installed, as they are built on +% different technologies, and have different strengths and weaknesses. +% +%% CVC3 +% * CVC3 is supported for checking for completness and disjointness of +% tables +% * CVC3 can be downloaded from http://cs.nyu.edu/acsys/cvc3/ +% * Ensure that cvc3 is executable on the shell path. +% * CVC3 is available for Linux/OS X and Windows. +% +%% PVS (Prototype Verification System) +% * PVS is supported for checking for completness and +% disjointness of tables. +% * PVS is downloadable from http://pvs.csl.sri.com/ +% * System has been tested on PVS versions 5.0, 4.2 and 4.1 +% * Ensure that pvs executable is on shell path +% * *Note:* PVS is a Linux and MacOS X application and will not run natively +% on Windows. diff --git a/html/TT_gs_top.m b/html/TT_gs_top.m new file mode 100644 index 0000000..4c021de --- /dev/null +++ b/html/TT_gs_top.m @@ -0,0 +1,6 @@ +%% Getting Started +% +% * +% * +% * +% diff --git a/html/TT_help.m b/html/TT_help.m new file mode 100644 index 0000000..718a866 --- /dev/null +++ b/html/TT_help.m @@ -0,0 +1,8 @@ +%% Tabular Expression Toolbox +% +% *Available Documentation* +% +% * +% * +% +% Copyright 2010 Colin Eles diff --git a/html/TT_ug.m b/html/TT_ug.m new file mode 100644 index 0000000..8c7df3b --- /dev/null +++ b/html/TT_ug.m @@ -0,0 +1,9 @@ +%% User Guide +% +% * +% * +% * +% * +% * +% +% Copyright 2010 Colin Eles \ No newline at end of file diff --git a/html/TT_ug_background.m b/html/TT_ug_background.m new file mode 100644 index 0000000..b9da751 --- /dev/null +++ b/html/TT_ug_background.m @@ -0,0 +1,4 @@ +%% Tabular Expressions +% +% + diff --git a/html/TT_ug_checking.m b/html/TT_ug_checking.m new file mode 100644 index 0000000..2f27802 --- /dev/null +++ b/html/TT_ug_checking.m @@ -0,0 +1,189 @@ +%% Typechecking a Table +%% Overview +% +% Of of the main features of tabular expressions is the facilitation of the +% inspection of completeness and disjointness conditions. This tool has +% support for external tools to automate this process. Currently two +% tools based on different ideas and technologies are supported. +% In order to typecheck a table at least one of these tools must be +% installed on the system, see the in the . +% +% It is recommended that both systems be installed as they have different +% advantages and disadvantages, additionally with both installed a single +% point of failure for typechecking the table is avoided. +% +% The default typechecker is CVC3 as it is easier to install and available +% for more platforms. however this can be changed from the typecheck +% menu, see screenshot below. +% +% <> +% +% Both tools will appear to operate the same way to the user; the details of how the tools run and +% their interfaces are hidden from the user of the table tool. If a table +% is valid the user will be notified with a message box as seen below. if +% the table is not valid a typechecking report will be generated see below +% for more details. +% +% <> +% +%% Syntax Check +% +% Pressing the "Syntax" button or selecting "Syntax Check" from the +% Typecheck menu will perform a syntactic check on the table. The syntactic +% check will look at the inputs, conditions, and outputs to ensure that all +% variables are defined and all expressions are proper Matlab syntax. The syntax check will +% highlight the problem cells in red as seen in the example below. +% Condition cells must evaluate to a value that can be interpreted as a +% boolean value. +% +% <> +% +% In this example the reason there is a syntax error is because the +% variable declared in the inputs field is x1 whereas the variable being +% used in the conditions is x. To fix this error one could either change +% the inputs field to be x or the each x in the table to be x1. +% +%% CVC3 +% CVC3 is the third iteration of a SMT solver developed at NYU. +% +% *CVC3 Typecheck* +% +% Typecheck the current table using CVC3, will perform a syntax check +% prior to running the typecheck operation. +% +% *Generate CVC File* +% +% Generate a CVC file with the required proof obligations. Calling the typecheck +% function will also do this, but this function will not attempt to prove +% the file. +% +%% PVS +% PVS is a general purpose theorem prover developed by SRI. +% +% *PVS Typecehck* +% +% Typecheck the current table using PVS, will perform a syntax check +% prior to running the typecheck operation. +% +% *PVS Settings* +% +% A few settings for running the pvs commands can be adjusted using the pvs +% settings window. See the screenshot below. +% +% <> +% +% * *Imports:* Allows to specify one or more pvs files to import, can be +% used if other functions or types are referenced. +% * *Test Count:* Used to adjust the number of attempts when generating a counterexample +% to an unproven theorem. Increasing this will increase the chances of +% finding a counterexample but will also increase the time taken to find a +% counterexample. +% * *Test Range:* Used to adjust the range of possible counterexamples +% tested. the range of numbers to test will be in the range (-size..size). +% for example if your theorem is only false for the value 500 then you +% would require a range value >= 500 in order to find the counterexample. +% +% *PVS Check Status* +% +% Check if the current file has already been typechecked, used when a +% table was manually proven in pvs rather than being +% automatically proven using the tool. If the tool fails to generate a +% counterexample it is possible that the theorem is true but the automatic +% PVS proof strategies were not sufficient to prove the table, in this case it may be +% neccessary to prove the table manually using the pvs interface. This +% command allows you to read the state of the proof into the table tool. +% +% *PVS Generate File* +% +% Generate a pvs file representing the table. Calling the typecheck +% function will also do this, but this function will not attempt to prove +% the file. +% +% *PVS Typecheck SimTypes* +% +% Typechecking the table with regards to the Simulink types will ignore any +% typing information in the inputs or function name fields. typng +% information will be taken from the simulink diagram, so any port +% datatypes specified in the ports and data manager window will be used. +% inorder to determine any inherited types the tool will compile the +% simulink diagram. Therefore any errors in the diagram (alegbraic loops, +% etc.) will need to be resolved before being able to use this mode of +% typechecking. +% +%% PVS or CVC3 +% PVS and CVC3 are based on 2 different technologies, which means that they +% will have different advantages and disadvantages. +% +% CVC3 will generally be much faster than PVS, and is usually better at finding a counterexample, +% however it is not as robust as PVS and if any expressions involve +% nonlinear mathematics the tool may not perform as expected. As CVC3 is an +% SMT solver, proving something is an all or nothing operation either the +% query is valid, invalid, or unknown; there is no way to manually guide or +% direct the proof in anyway. +% +% PVS is a very general purpose theorem prover, it is very powerful, and as +% such has a larger overhead than CVC3, as a result it takes longer to run +% a proof on PVS. PVS's tactics for generating counterexamples is not very +% sophisticated so it is not always the case that it will find one; it +% generally takes a substantial amount of time to run a check for +% counterexamples. PVS has a robust proof engine that allows for users to +% manually guide a proof through its completion. When typechecking a table +% using PVS, PVS may not be able to prove the theorems correct, if a +% counterexample is not found it may mean that the default proof strategy +% was not sufficient rather than it being false. In this case the tool allows you to go into pvs to +% attempt to manually prove the table, this will require knowledge of the +% pvs proof engine and language, we recomend you find more information here +% +% +% For these reasons, to get the full power the tool it is recomended that +% both PVS and CVC3 be installed. Typechecking with both tools eliminates +% a single point of failure in the typechecking step, and provides greater +% assurance to the designer that the table is correct. +% +%% Typechecking Report +% +% If a table fails to be proven valid a typechecking report will be +% generated. The report serves a number of functions it shows the user what +% the unproven sequent (logical statement) was, the report will display a counter +% example should one be generated. The report will highlight in the +% table the state of cells for the generated +% counterexamples, this makes it very easy to see where the error was made. +% +% Below is the report for a CVC3 typecheck then for a PVS typecheck. +% +% <> +% +% <> +% +% There is a minor difference between the CVC3 and the PVS report. The PVS +% report has a button called "Open" this will open the current theory in +% PVS allowing for the user to attempt to prove the theorems. +% +% If more than one sequent is unproveable, the "next" button will be +% enabled, this allows the user to view the other unprovable sequents and +% possible counterexamples. +% +% When viewing a sequent that has a counterexample the report will +% highlight on the table window the state of the conditions. +% +% * A *Red* colour indicates that the given cell has evaulated to *False* +% for the current counterexample. +% * A *Green* colour indicates that the given cell has evaulated to *True* +% for the current counterexample. +% +% Ideally you want one and only one green cell in each grid. Some examples follow: +% +% *Non-disjoint tables* +% +% <> +% +% <> +% +% *Incomplete tables* +% +% <> +% +% <> +% +% \ No newline at end of file diff --git a/html/TT_ug_editing.m b/html/TT_ug_editing.m new file mode 100644 index 0000000..112e09f --- /dev/null +++ b/html/TT_ug_editing.m @@ -0,0 +1,115 @@ +%% Editing a Tabular Expression +% +% The Table Tool allows users to graphically layout a +% tabular expression, for which conditions and outputs can be specified +% using the embedded Matlab subset of the Matlab language. +%% Layout +% The Dialog interface allows for the creation of 1-Dimensional vertical +% and horizontal tables, as well as 2-Dimensional tables. The tool supports +% multiple outputs for 1-Dimensional vertical tables. +% +% The figure below shows an example 2-Dimensional Table with the Vertical +% Conditions, Horizontal Conditions, and Outputs notated. +% +% <> +% +% The "new" button will create an additional condition box for a particular +% grid. The "delete" button will remove the last condition box in a grid. +% For each condition in the vertical conditions, a subgrid can be created. +% To create a subgrid for a condition click on the "+" button next to the +% intended box. +% +% Whenever the configuration of the vertical and horizontal conditions +% is changed the corresponding output boxes will update as well. +%% Inputs +% The input box labeled "Inputs" allows for the specification of inputs to +% the table. There is no limit in the number of inputs supported. Inputs +% are specified in a comma delimited list. names of inputs must conform to +% the Matlab syntax conventions. +% +% *Typing* +% +% Typing information can be specified for each input declared. This allows +% for users to declare inputs as dependent types. The format for typing follows that of +% PVS, some examples: +% +% * |x, y, z| - 3 inputs with the default type +% * |x, y:bool| - 2 inputs, y with specified type, x has the default +% type. +% * |x:real, y:real, z:bool| - 2 inputs of type real and one of type bool +% * |x:real, y:{t:real|t>x}| - 2 inputs of type real, y is dependent on x, +% and is restricted to those value strictly greater than x +% +%% Expression Name +% the expression name will be the name identifying the block, it will also +% be the function name for generated Matlab code. +% +% *Typing* +% +% For single output tables, typing information for the output type of the +% function can be specified in this textbox. formatting for the typing is +% the same as that for inputs. +% +%% Conditions +% Text input for a condition box must be valid embedded Matlab code. +% Expressions in condition boxes will be evaluated with the assumed type of +% boolean. Since embedded Matlab is not typechecked this is a potential +% cause of errors. By running a syntax check on a table, each expression in a +% condition box will be checked that it is of type boolean. +% +% For a table with multiple outputs, the horizontal condition boxes +% represent different outputs, more detail about this in the following +% section. +% +%% Outputs +% The outputs of the function are specified in the outputs grid. Outputs must be an expression that +% will evaluate to a definite value. Each output specified should be the same type, however since +% Matlab is not strongly typed, almost every possible value will be interpreted as a compatible type. +% The tool supports 2 output modes: single output and multiple output. +% +% The output mode can be specified from the edit menu as seen in the +% following figure: +% +% <> +% +% *Single Output* +% +% For a single output table, the vertical grid can be used for another +% dimension of conditions. Each output cell shall be a single expression +% which will evaluate to the output under the interpreted conditions. +% +% *Multiple Output* +% +% For a table with multiple outputs, the horizontal condition grid is used +% to specify the outputs of the table. The same rules for typing apply as noted in the +% inputs and expression section of this document. +% +% Each cell in the condition grid +% specifies the name (and type) of an output. See the following figure for +% an example. Each cell in the output grid specifies an output that +% corresponds to the output specified in the horizontal grid above it. +% +% In the example below +% the table has 2 +% different outputs labeled, output1 and output2; the outputs have +% different types. Multiple outputs facilitates robust function specification. +% +% <> +% +%% Ports +% +% The "Ports" button will bring up the ports and data manager window (see +% next figure.) From here you can specify the datatypes of signals, as well +% as any other functionality as you would with another Simulink block. +% +% <> +% +%% Edit Mode +% +% The edit button is a toggle button which allows for the user to hide the +% editing buttons which include the new row, delete row, new subgrid, etc. +% buttons. Hiding these buttons allows for cleaner looking table with fewer +% distractions allowing the user to concentrate on the content in the +% table. see an example below. +% +% <> \ No newline at end of file diff --git a/html/TT_ug_floating.m b/html/TT_ug_floating.m new file mode 100644 index 0000000..d37c4f5 --- /dev/null +++ b/html/TT_ug_floating.m @@ -0,0 +1,37 @@ +%% Working with floating point numbers +% +%% Floating point numbers +% One of the limitations with computers is the way that we have to +% represent real numbers. In a theoretical sense the real numbers has +% infinite range and infinite precision, however when we want to represent +% these numbers in a machine using the standard numerical representation +% for a variety of reasons we +% lose these properties. +% +% Matlab and most computers use the IEEE 754 floating point standard. The +% standard defines the way real numbers can be represented from the bit +% level including the results of operations, and exceptions. +% +% A full discussion of the standard is beyond the scope of this document we +% refer the interested reader to as well as the +% +% +%% Proving tables with floating point numbers +% +% The toolbox has support for proving tables with floating point inputs. +% Currently only PVS is supported for this feature, and in general manual +% intervention with the prover will likely be required. +% +% Several new types are provided which can be used as anyother type in the input and output fields. +% +% +% * single - a finite or infinite single precision number +% * single_finite - a finite single precision number +% * double - a finite or infinite double precision number +% * double_finite - a finite double precision number +% +% A sample input string might be "x:double_finite, y:double_finite". The +% same rules for subtyping still apply, as it may be necessary to subtype +% inputs in order to get them to typecheck properly. +% \ No newline at end of file diff --git a/html/TT_ug_opening.m b/html/TT_ug_opening.m new file mode 100644 index 0000000..65e3c2c --- /dev/null +++ b/html/TT_ug_opening.m @@ -0,0 +1,17 @@ +%% Creating a new Tabular Expression +% +%% Matlab +% +% The table tool can be opened up from the Matlab environment, this allows +% users to create a table and generate an m-file function representing the +% tabular expression in the table. +% +% To open up the Table Tool dialog click Start->Toolbox->Table +% Toolbox->Table Tool +%% Simulink +% +% To create a table block in the Simulink environement, open up the block +% library. Select the Tabular Expression Toolbox Library. From the Table Toolbox Library +% you should see A block Called Tabular Expression, Drag this block to a +% new or existing model to add a Tabular Expression. Double Click on the +% block in the model to bring up the Tabular Expression Dialog. \ No newline at end of file diff --git a/html/TT_ug_saving.m b/html/TT_ug_saving.m new file mode 100644 index 0000000..b53a1c9 --- /dev/null +++ b/html/TT_ug_saving.m @@ -0,0 +1,30 @@ +%% Saving a Table +% +%% Saving to Block +% +% Saving to a block will either save to an existing simulink block or +% create a new simulink block for the current table. Saving to a block is +% the default save option so if the "Save" button is pressed it will +% perform this action. +% +% If changes are made in the table interface they will not be updated in the +% underlying generated code in +% the simulink block until saving is performed, it is important to remember +% to save before closing the interface. +% +%% Saving to an M-File +% +% The Tabular Expression Toolbox allows for users to save their table as an m-function. +% This allows the function to be called from Matlab scripts or functions; +% users can also run the function from the command line as a quick way of +% testing functionality. +% +% To save a table to an m-file select the "save to m-file" command from the +% file menu as seen in the following screen shot. +% +% <> +% +% The toolbox will create a file with the name expression_name.m, where +% expression_name is the name of your expression. The function can then be +% called as you would any other function in Matlab, ie. +% expression_name(arg1,arg2,...) \ No newline at end of file diff --git a/html/TT_ug_settings.m b/html/TT_ug_settings.m new file mode 100644 index 0000000..e69de29 diff --git a/html/generation_doc.m b/html/generation_doc.m new file mode 100644 index 0000000..f7dd697 --- /dev/null +++ b/html/generation_doc.m @@ -0,0 +1,12 @@ +%% Regenerate documentation +% This file regenerates documentation in the current directory. It only +% works on files starting with 'TT_', and does not recurse. It also +% doesn't evaluate code. +files = dir +c = 0 +for i = 1:length(files) + if files(i).isdir == 0 && strcmp(files(i).name(1:3), 'TT_') + files(i).name + publish(files(i).name, struct('evalCode', false)) + end +end \ No newline at end of file diff --git a/html/helptoc.xml b/html/helptoc.xml new file mode 100644 index 0000000..9cd7e08 --- /dev/null +++ b/html/helptoc.xml @@ -0,0 +1,48 @@ + + + + + + Tabular Expression Toolbox + + + + + + + + + + + + Getting Started with the Tabular Expression Toolbox + System Requirements + + Product Overview + + References + + + + + + + + + + Tabular Expression Toolbox Web Site + + + + \ No newline at end of file diff --git a/html/helptoc_template.xml b/html/helptoc_template.xml new file mode 100644 index 0000000..d3d5989 --- /dev/null +++ b/html/helptoc_template.xml @@ -0,0 +1,45 @@ + + + + + + Tabular Expression Toolbox + + + + + + + + + + + + Getting Started with the MyToolbox Toolbox + System Requirements + + + + + + + + + + + Tabular Expression Toolbox Web Site + + + + \ No newline at end of file diff --git a/html/html/TT_gs_over.html b/html/html/TT_gs_over.html new file mode 100644 index 0000000..74c3be3 --- /dev/null +++ b/html/html/TT_gs_over.html @@ -0,0 +1,227 @@ + + + + + Product Overview

Product Overview

This product allows users to interactively design a tabular expression. The resusulting function can be saved as a Simulink block or to a Matlab m-file. Tabular Expressions can be proved to be disjoint and complete using the PVS theorem prover. This allows users to ensure that the table they are designing has covered all possible inputs and is deterministic.

Contents

Creating a new table

To create a new table block locate the Tabular Expression block in the simulink library.

Drag the Tabular Expression block to a new or existing model.

Table Tool Dialog

To edit the functionality of the table double click on the block to bring up the Table Tool dialog. From this dialog you can create the layout for the table and edit the conditions and outputs for the function.

Example Table

An example of a 2-dimensional table is shown below

This table specifies a function with 3 inputs x, y, and z, and one output. Saving the table will generate the following embedded matlab code:

function output  = demo_table(x,y,z)
+
%%#eml
+if(x>0)
+  if(y>1)
+    if(z>1)
+      output = 1;
+    elseif(z<=1)
+      output = 5;
+    end
+  elseif(y<=1)
+    if(z>1)
+      output = 2;
+    elseif(z<=1)
+      output = 6;
+    end
+  end
+elseif(x==0)
+  if(z>1)
+    output = 3;
+  elseif(z<=1)
+    output = 7;
+  end
+elseif(x<0)
+  if(z>1)
+    output = 4;
+  elseif(z<=1)
+    output = 8;
+  end
+end
+

If we go back and look at our model window we can see that our Tabular Expression block has updated based on our specified inputs and outputs.

Proving a Table

Let us assume that a table designer has specified the following function table:

In order for a tabular expression to be considered "proper" it must satisfy a Completness and Disjointness condition

  • Completness means that in the specification of a function we have considered all possible inputs in a condition cell.
  • Disjointness means that in the specification of a function all condition cells in a grid are pairwise disjoint, in other words for all possible inputs it is not the case that two conditions are true at the same time.

We desire these properties to ensure that our function is total and is deterministic. A function that is not total or not deterministic can have undesired effects, potentially causing safety critical problems depending on the requirements of the software. The graphical layout of a table helps the designer to evaluate a table for these conditions. Some times it is a non-trivial problem to determine if these conditions have been meet, so we employ the use of a theorem proving software to mechanically prove the properties.

Consider our example table, the designer of this table has failed to consider the case when x is equal to 1, the completness condition is not satisfied. Clicking on the Typecheck button will start the proof and popup a process dialog as shown below:

If the proof fails it will pop up a dialog giving the user some feedback of why the proof failed as seen in the next image.

The Typecheck summary window will display the formula for which a proof was not found. If a proof fails PVS attempts to find a counter example. In this senario pvs has found that a counter example to the formula is x = 1. When a counter example is found the tool will give visual feedback on which conditions were true and which were false for that counter example. A condition coloured red indicates that the condition was false for the given counter example, a green colour indicates that a condition is true. For this example we can see that both possible conditions are false for the counter example indicating to the table designer that they failed to consider a case of the input.

In the example above, the designer of the table has captured the case where x = 0 in both conditions of the table. The tool has highlighted both cells green to indicate to the user that for the counter example of x = 0 both of these conditions are true, the designer has failed to unambiguosly specify what should happen in this senario.

\ No newline at end of file diff --git a/html/html/TT_gs_ref.html b/html/html/TT_gs_ref.html new file mode 100644 index 0000000..58d4fa7 --- /dev/null +++ b/html/html/TT_gs_ref.html @@ -0,0 +1,94 @@ + + + + + Tabular Expressions References

Tabular Expressions References

Contents

Tabular Expression Toolbox Publications

  • C. Eles and M. Lawford, "A tabular expression toolbox for Matlab/Simulink," NASA Formal Methods, LNCS Vol. 6617, pp. 494-499, Springer, 2011.

Background Information

Tabular Expressions have been around for many years, below are some papers discussing some of the fundamentals behind tabular expressions.

  • Y. Jin and D. L. Parnas, "Defining the meaning of tabular mathematical expressions," Science of Computer Programming, Vol. 75, no. 11, pp. 980-1000, 2010.
  • Parnas, D.L., "Tabular Representation of Relations", CRL Report 260, McMaster University, Communications Research Laboratory, TRIO (Telecommunications Research Institute of Ontario), October 1992, 17 pgs.
  • R. Janicki, D.L. Parnas, and J. Zucker, "Tabular representations in relational documents," in in Relational Methods in Computer Science, pp. 184-196, Springer Verlag, 1996.

Tabular Expressions in Industry

Tabular Expressions have been used in numerous industrial projects, below are some papers describing some of such projects.

  • A. Wassyng and M. Lawford, "Lessons learned from a successful implementation of formal methods in an industrial project," in FME 2003: International Symposium of Formal Methods Europe Proceedings (K. Araki, S. Gnesi, and D. Mandrioli, eds.), vol. 2805 of Lecture Notes in Computer Science, pp. 133-153, Springer-Verlag, Aug. 2003.
  • R. L. Baber, D. L. Parnas, S. A. Vilkomir, P. Harrison, and T. O'Connor, "Disciplined methods of software specification: A case study," in ITCC '05: Proceedings of the International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II, (Washington, DC, USA), pp. 428-437, IEEE Computer Society, 2005.
\ No newline at end of file diff --git a/html/html/TT_gs_req.html b/html/html/TT_gs_req.html new file mode 100644 index 0000000..3c3ff86 --- /dev/null +++ b/html/html/TT_gs_req.html @@ -0,0 +1,100 @@ + + + + + System Requirements

System Requirements

Contents

Matlab/Simulink

  • Tested with Matlab Simulink 2011b, 2011a, 2010a, 2009b

Table Checking

  • The tool supports checking of table completness and disjointness through the support of external tools
  • This tool will work with either or both of the tools installed.
  • It is recommened that both tools be installed, as they are built on different technologies, and have different strengths and weaknesses.

CVC3

  • CVC3 is supported for checking for completness and disjointness of tables
  • CVC3 can be downloaded from http://cs.nyu.edu/acsys/cvc3/
  • Ensure that cvc3 is executable on the shell path.
  • CVC3 is available for Linux/OS X and Windows.

PVS (Prototype Verification System)

  • PVS is supported for checking for completness and disjointness of tables.
  • PVS is downloadable from http://pvs.csl.sri.com/
  • System has been tested on PVS versions 5.0, 4.2 and 4.1
  • Ensure that pvs executable is on shell path
  • Note: PVS is a Linux and MacOS X application and will not run natively on Windows.
\ No newline at end of file diff --git a/html/html/TT_gs_top.html b/html/html/TT_gs_top.html new file mode 100644 index 0000000..3394ee6 --- /dev/null +++ b/html/html/TT_gs_top.html @@ -0,0 +1,78 @@ + + + + + Getting Started \ No newline at end of file diff --git a/html/html/TT_help.html b/html/html/TT_help.html new file mode 100644 index 0000000..5b1e77a --- /dev/null +++ b/html/html/TT_help.html @@ -0,0 +1,80 @@ + + + + + Tabular Expression Toolbox

Tabular Expression Toolbox

Available Documentation

Copyright 2010 Colin Eles

\ No newline at end of file diff --git a/html/html/TT_ug.html b/html/html/TT_ug.html new file mode 100644 index 0000000..14a0ed2 --- /dev/null +++ b/html/html/TT_ug.html @@ -0,0 +1,80 @@ + + + + + User Guide \ No newline at end of file diff --git a/html/html/TT_ug_background.html b/html/html/TT_ug_background.html new file mode 100644 index 0000000..6ba7760 --- /dev/null +++ b/html/html/TT_ug_background.html @@ -0,0 +1,76 @@ + + + + + Tabular Expressions \ No newline at end of file diff --git a/html/html/TT_ug_checking.html b/html/html/TT_ug_checking.html new file mode 100644 index 0000000..9122b7f --- /dev/null +++ b/html/html/TT_ug_checking.html @@ -0,0 +1,260 @@ + + + + + Typechecking a Table

Typechecking a Table

Contents

Overview

Of of the main features of tabular expressions is the facilitation of the inspection of completeness and disjointness conditions. This tool has support for external tools to automate this process. Currently two tools based on different ideas and technologies are supported. In order to typecheck a table at least one of these tools must be installed on the system, see the System Requirements in the Getting Started Guide.

It is recommended that both systems be installed as they have different advantages and disadvantages, additionally with both installed a single point of failure for typechecking the table is avoided.

The default typechecker is CVC3 as it is easier to install and available for more platforms. however this can be changed from the typecheck menu, see screenshot below.

Both tools will appear to operate the same way to the user; the details of how the tools run and their interfaces are hidden from the user of the table tool. If a table is valid the user will be notified with a message box as seen below. if the table is not valid a typechecking report will be generated see below for more details.

Syntax Check

Pressing the "Syntax" button or selecting "Syntax Check" from the Typecheck menu will perform a syntactic check on the table. The syntactic check will look at the inputs, conditions, and outputs to ensure that all variables are defined and all expressions are proper Matlab syntax. The syntax check will highlight the problem cells in red as seen in the example below. Condition cells must evaluate to a value that can be interpreted as a boolean value.

In this example the reason there is a syntax error is because the variable declared in the inputs field is x1 whereas the variable being used in the conditions is x. To fix this error one could either change the inputs field to be x or the each x in the table to be x1.

CVC3

CVC3 is the third iteration of a SMT solver developed at NYU.

CVC3 Typecheck

Typecheck the current table using CVC3, will perform a syntax check prior to running the typecheck operation.

Generate CVC File

Generate a CVC file with the required proof obligations. Calling the typecheck function will also do this, but this function will not attempt to prove the file.

PVS

PVS is a general purpose theorem prover developed by SRI.

PVS Typecehck

Typecheck the current table using PVS, will perform a syntax check prior to running the typecheck operation.

PVS Settings

A few settings for running the pvs commands can be adjusted using the pvs settings window. See the screenshot below.

  • Imports: Allows to specify one or more pvs files to import, can be used if other functions or types are referenced.
  • Test Count: Used to adjust the number of attempts when generating a counterexample to an unproven theorem. Increasing this will increase the chances of finding a counterexample but will also increase the time taken to find a counterexample.
  • Test Range: Used to adjust the range of possible counterexamples tested. the range of numbers to test will be in the range (-size..size). for example if your theorem is only false for the value 500 then you would require a range value >= 500 in order to find the counterexample.

PVS Check Status

Check if the current file has already been typechecked, used when a table was manually proven in pvs rather than being automatically proven using the tool. If the tool fails to generate a counterexample it is possible that the theorem is true but the automatic PVS proof strategies were not sufficient to prove the table, in this case it may be neccessary to prove the table manually using the pvs interface. This command allows you to read the state of the proof into the table tool.

PVS Generate File

Generate a pvs file representing the table. Calling the typecheck function will also do this, but this function will not attempt to prove the file.

PVS Typecheck SimTypes

Typechecking the table with regards to the Simulink types will ignore any typing information in the inputs or function name fields. typng information will be taken from the simulink diagram, so any port datatypes specified in the ports and data manager window will be used. inorder to determine any inherited types the tool will compile the simulink diagram. Therefore any errors in the diagram (alegbraic loops, etc.) will need to be resolved before being able to use this mode of typechecking.

PVS or CVC3

PVS and CVC3 are based on 2 different technologies, which means that they will have different advantages and disadvantages.

CVC3 will generally be much faster than PVS, and is usually better at finding a counterexample, however it is not as robust as PVS and if any expressions involve nonlinear mathematics the tool may not perform as expected. As CVC3 is an SMT solver, proving something is an all or nothing operation either the query is valid, invalid, or unknown; there is no way to manually guide or direct the proof in anyway.

PVS is a very general purpose theorem prover, it is very powerful, and as such has a larger overhead than CVC3, as a result it takes longer to run a proof on PVS. PVS's tactics for generating counterexamples is not very sophisticated so it is not always the case that it will find one; it generally takes a substantial amount of time to run a check for counterexamples. PVS has a robust proof engine that allows for users to manually guide a proof through its completion. When typechecking a table using PVS, PVS may not be able to prove the theorems correct, if a counterexample is not found it may mean that the default proof strategy was not sufficient rather than it being false. In this case the tool allows you to go into pvs to attempt to manually prove the table, this will require knowledge of the pvs proof engine and language, we recomend you find more information here <http://pvs.csl.sri.com>

For these reasons, to get the full power the tool it is recomended that both PVS and CVC3 be installed. Typechecking with both tools eliminates a single point of failure in the typechecking step, and provides greater assurance to the designer that the table is correct.

Typechecking Report

If a table fails to be proven valid a typechecking report will be generated. The report serves a number of functions it shows the user what the unproven sequent (logical statement) was, the report will display a counter example should one be generated. The report will highlight in the table the state of cells for the generated counterexamples, this makes it very easy to see where the error was made.

Below is the report for a CVC3 typecheck then for a PVS typecheck.

There is a minor difference between the CVC3 and the PVS report. The PVS report has a button called "Open" this will open the current theory in PVS allowing for the user to attempt to prove the theorems.

If more than one sequent is unproveable, the "next" button will be enabled, this allows the user to view the other unprovable sequents and possible counterexamples.

When viewing a sequent that has a counterexample the report will highlight on the table window the state of the conditions.

  • A Red colour indicates that the given cell has evaulated to False for the current counterexample.
  • A Green colour indicates that the given cell has evaulated to True for the current counterexample.

Ideally you want one and only one green cell in each grid. Some examples follow:

Non-disjoint tables

Incomplete tables

\ No newline at end of file diff --git a/html/html/TT_ug_editing.html b/html/html/TT_ug_editing.html new file mode 100644 index 0000000..9700606 --- /dev/null +++ b/html/html/TT_ug_editing.html @@ -0,0 +1,186 @@ + + + + + Editing a Tabular Expression

Editing a Tabular Expression

The Table Tool allows users to graphically layout a tabular expression, for which conditions and outputs can be specified using the embedded Matlab subset of the Matlab language.

Contents

Layout

The Dialog interface allows for the creation of 1-Dimensional vertical and horizontal tables, as well as 2-Dimensional tables. The tool supports multiple outputs for 1-Dimensional vertical tables.

The figure below shows an example 2-Dimensional Table with the Vertical Conditions, Horizontal Conditions, and Outputs notated.

The "new" button will create an additional condition box for a particular grid. The "delete" button will remove the last condition box in a grid. For each condition in the vertical conditions, a subgrid can be created. To create a subgrid for a condition click on the "+" button next to the intended box.

Whenever the configuration of the vertical and horizontal conditions is changed the corresponding output boxes will update as well.

Inputs

The input box labeled "Inputs" allows for the specification of inputs to the table. There is no limit in the number of inputs supported. Inputs are specified in a comma delimited list. names of inputs must conform to the Matlab syntax conventions.

Typing

Typing information can be specified for each input declared. This allows for users to declare inputs as dependent types. The format for typing follows that of PVS, some examples:

  • x, y, z - 3 inputs with the default type
  • x, y:bool - 2 inputs, y with specified type, x has the default type.
  • x:real, y:real, z:bool - 2 inputs of type real and one of type bool
  • x:real, y:{t:real|t>x} - 2 inputs of type real, y is dependent on x, and is restricted to those value strictly greater than x

Expression Name

the expression name will be the name identifying the block, it will also be the function name for generated Matlab code.

Typing

For single output tables, typing information for the output type of the function can be specified in this textbox. formatting for the typing is the same as that for inputs.

Conditions

Text input for a condition box must be valid embedded Matlab code. Expressions in condition boxes will be evaluated with the assumed type of boolean. Since embedded Matlab is not typechecked this is a potential cause of errors. By running a syntax check on a table, each expression in a condition box will be checked that it is of type boolean.

For a table with multiple outputs, the horizontal condition boxes represent different outputs, more detail about this in the following section.

Outputs

The outputs of the function are specified in the outputs grid. Outputs must be an expression that will evaluate to a definite value. Each output specified should be the same type, however since Matlab is not strongly typed, almost every possible value will be interpreted as a compatible type. The tool supports 2 output modes: single output and multiple output.

The output mode can be specified from the edit menu as seen in the following figure:

Single Output

For a single output table, the vertical grid can be used for another dimension of conditions. Each output cell shall be a single expression which will evaluate to the output under the interpreted conditions.

Multiple Output

For a table with multiple outputs, the horizontal condition grid is used to specify the outputs of the table. The same rules for typing apply as noted in the inputs and expression section of this document.

Each cell in the condition grid specifies the name (and type) of an output. See the following figure for an example. Each cell in the output grid specifies an output that corresponds to the output specified in the horizontal grid above it.

In the example below the table has 2 different outputs labeled, output1 and output2; the outputs have different types. Multiple outputs facilitates robust function specification.

Ports

The "Ports" button will bring up the ports and data manager window (see next figure.) From here you can specify the datatypes of signals, as well as any other functionality as you would with another Simulink block.

Edit Mode

The edit button is a toggle button which allows for the user to hide the editing buttons which include the new row, delete row, new subgrid, etc. buttons. Hiding these buttons allows for cleaner looking table with fewer distractions allowing the user to concentrate on the content in the table. see an example below.

\ No newline at end of file diff --git a/html/html/TT_ug_floating.html b/html/html/TT_ug_floating.html new file mode 100644 index 0000000..9ca1af6 --- /dev/null +++ b/html/html/TT_ug_floating.html @@ -0,0 +1,108 @@ + + + + + Working with floating point numbers

Working with floating point numbers

Contents

Floating point numbers

One of the limitations with computers is the way that we have to represent real numbers. In a theoretical sense the real numbers has infinite range and infinite precision, however when we want to represent these numbers in a machine using the standard numerical representation for a variety of reasons we lose these properties.

Matlab and most computers use the IEEE 754 floating point standard. The standard defines the way real numbers can be represented from the bit level including the results of operations, and exceptions.

A full discussion of the standard is beyond the scope of this document we refer the interested reader to Matlab's documentation as well as the standard documentation

Proving tables with floating point numbers

The toolbox has support for proving tables with floating point inputs. Currently only PVS is supported for this feature, and in general manual intervention with the prover will likely be required.

Several new types are provided which can be used as anyother type in the input and output fields.

  • single - a finite or infinite single precision number
  • single_finite - a finite single precision number
  • double - a finite or infinite double precision number
  • double_finite - a finite double precision number

A sample input string might be "x:double_finite, y:double_finite". The same rules for subtyping still apply, as it may be necessary to subtype inputs in order to get them to typecheck properly.

\ No newline at end of file diff --git a/html/html/TT_ug_opening.html b/html/html/TT_ug_opening.html new file mode 100644 index 0000000..1f0ca07 --- /dev/null +++ b/html/html/TT_ug_opening.html @@ -0,0 +1,88 @@ + + + + + Creating a new Tabular Expression

Creating a new Tabular Expression

Contents

Matlab

The table tool can be opened up from the Matlab environment, this allows users to create a table and generate an m-file function representing the tabular expression in the table.

To open up the Table Tool dialog click Start->Toolbox->Table Toolbox->Table Tool

Simulink

To create a table block in the Simulink environement, open up the block library. Select the Tabular Expression Toolbox Library. From the Table Toolbox Library you should see A block Called Tabular Expression, Drag this block to a new or existing model to add a Tabular Expression. Double Click on the block in the model to bring up the Tabular Expression Dialog.

\ No newline at end of file diff --git a/html/html/TT_ug_saving.html b/html/html/TT_ug_saving.html new file mode 100644 index 0000000..b12575d --- /dev/null +++ b/html/html/TT_ug_saving.html @@ -0,0 +1,101 @@ + + + + + Saving a Table

Saving a Table

Contents

Saving to Block

Saving to a block will either save to an existing simulink block or create a new simulink block for the current table. Saving to a block is the default save option so if the "Save" button is pressed it will perform this action.

If changes are made in the table interface they will not be updated in the underlying generated code in the simulink block until saving is performed, it is important to remember to save before closing the interface.

Saving to an M-File

The Tabular Expression Toolbox allows for users to save their table as an m-function. This allows the function to be called from Matlab scripts or functions; users can also run the function from the command line as a quick way of testing functionality.

To save a table to an m-file select the "save to m-file" command from the file menu as seen in the following screen shot.

The toolbox will create a file with the name expression_name.m, where expression_name is the name of your expression. The function can then be called as you would any other function in Matlab, ie. expression_name(arg1,arg2,...)

\ No newline at end of file diff --git a/html/html/TT_ug_settings.html b/html/html/TT_ug_settings.html new file mode 100644 index 0000000..0ee404f --- /dev/null +++ b/html/html/TT_ug_settings.html @@ -0,0 +1,72 @@ + + + + + TT_ug_settings \ No newline at end of file diff --git a/html/html/ug_check_1.png b/html/html/ug_check_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c3b350fbfcfa2f2e0545e6d777696f5ca3b89d5 GIT binary patch literal 50891 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 literal 0 HcmV?d00001 diff --git a/html/html/ug_check_10.png b/html/html/ug_check_10.png new file mode 100644 index 0000000000000000000000000000000000000000..640f4a19247be5019a35ec0559bf437a5c0f95ac GIT binary patch literal 51221 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�y;Qb)-`4WE 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

-`m9F1~#?K~H? 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%0DVRFDsaQ1;)SLsm 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 UAC6NmLBNNcl(J;CxN-3R2kmzL8~^|S literal 0 HcmV?d00001 diff --git a/html/html/ug_check_2.png b/html/html/ug_check_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd24a210768b43f9f018f456e3c5d6b55fa9f6f GIT binary patch literal 34220 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 D-Q{ED literal 0 HcmV?d00001 diff --git a/html/html/ug_check_3.png b/html/html/ug_check_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d8fd4338247ca3645337607e3011f1601538f1 GIT binary patch literal 16524 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 literal 0 HcmV?d00001 diff --git a/html/html/ug_check_4.png b/html/html/ug_check_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbfffeb83c2908967b829b84bb9786eb69678da GIT binary patch literal 44781 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

iU9Aas8?W#a%6a5^PI-N1M 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

sTuw;Y4_ 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 E1(Jp>m;e9( literal 0 HcmV?d00001 diff --git a/html/html/ug_check_5.png b/html/html/ug_check_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dd3b6e66f24084383a3e1331fe0f595e2eb7931f GIT binary patch literal 47478 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 V`|dPvUR%rn1fH&bF6*2UngBvH`p^IX literal 0 HcmV?d00001 diff --git a/html/html/ug_check_7.png b/html/html/ug_check_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e707f77ca9c35828d9e8e6ff503e4e22c4c9717d GIT binary patch literal 57681 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 PzI?q;d)59m>Tmx705T^1 literal 0 HcmV?d00001 diff --git a/html/html/ug_check_8.png b/html/html/ug_check_8.png new file mode 100644 index 0000000000000000000000000000000000000000..24295e93401bc62a1bbbd1c4789595f955f7ff35 GIT binary patch literal 61548 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 literal 0 HcmV?d00001 diff --git a/html/html/ug_check_9.png b/html/html/ug_check_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b86f6617166964baa9702b8a1684bf5496b59967 GIT binary patch literal 69611 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Ν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 literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_1.png b/html/html/ug_layout_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ba14879d97811201944bc086133239f1c767c8 GIT binary patch literal 47015 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 literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_2.png b/html/html/ug_layout_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0e2daf11feb352b7b498c682af2476c7f6eff5 GIT binary patch literal 74249 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%0D+Yc25 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 literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_3.png b/html/html/ug_layout_3.png new file mode 100644 index 0000000000000000000000000000000000000000..16a1c7763dbd1b8c5e56698c257ecc7cb155567d GIT binary patch literal 52582 zcmbTdV{~NC*9IC*Y}>YN+qP{dolG*Z?TKwo>`ZJsnb@|IoB929-}~{dRo$z)`kby) z8_$0BuIg|_c?mdZY-k`LAUG*WQDqZURB8pNXB7}<0 z4(3+2W~)hg%K5z z;uN92#Usb$Lgvrw9bNlu`gQ?6Hv~NRrZP@9Orp3B)@{bIFG2jRk}+}5VspU=2^o3k zg$*L-Cjb0E;Q_Ao2f7kO-3qfe>di1Wm+1ZUwu=TmQsg3bKRWeed(A;py}&oJ2NE=| zU0vWCrvn;%1QN7t{T3Pm>c1YcFQT;F%P4-|o5qfMK^Rp6U$^AY@jXn>&xrLTH99$% z9mrA~$PtW~X&wfMSzmJ!>-gZ?E72S*@r>Y-NwJ>^+ms?73}&Aj(XTDXDiPRj zmSGmo_3;x2FQ2I92PRAuL$4-@vNBcU;2ETP@+C1^)Ns$fr1 zn^G+aTN=tS|43wLbl~?O({Ywc1P!J$9=nxoaRj79+k6-`Kc4o%a_&wr2E37LD#(q*t zQUb5)XLl?7QsrjWM(tB0y3k$VX9AZ#n4mmf_Tkhg84Nu{t~@%B`?lXm5cO6W=-MJx zn^=(e$3rN$PcAT2uD=8&iXjBAAmaC_SwZ|#Ah=wZD1WM2kcS>9e1Sh#n6TfJ2;oTs zP~+g~1926B?ERS)zu5azHE-?>5YC%HRyf6{surA!ww?N-3X&$tw@1xJb#N z3Q3Lc2CU{^F3eWYrbJSzHP3BLAQxgT7MYto6Jp8J@b%DH0h3~zq8xdEX_F(bJ9O~C zydg+KR7P-2KokQxx(l!ioD0O<53Ip)BlbE?S`>A#iU_s=J2DB92@=W@vm(r5^+M9pqjKe<*77GJ-Wja1cl1^S$F#=?AZ$WuxpI!AqKNcJ z)KGXq%|UR?%*@}J;g})n9qVOG7fcm~|HRuR&c#J0;v}>uQp8~-a3ppUf6D$S*(#VW zbj%OS8!oae#4OY->Q}i@u~tE*+NFY_x>V^ZUN6kgOUP#~g3fIdR1;ZHXcUbuIw)Bz zaxalDrZ4y|%qJ08xScms>{P%dq9Q*h!lDqFhnCA$cwZz}(kb_v;GPweA)hiCazUy` zv_aB_b&`H!O;0x{x`p)^T0L~6B2aXVO3+o13gW1JW&uGo)%~;Iz#|YQtZKQvs zaBOeLHMlI;Dg$ePcHDLncfcpBHPkCPI7KXYAet*jpvQ&t?PB=t@BmJ)!_Bwjr`U2GwO54bM?*rjqf4G zR`b5XzQeWw@|Q87h9Q-rr6H4|sA9k((W2p^{f4B1eumOR!A2H`9D@SDU_c{85Q^@J z`G{7B!$#(dC5wWJ$%q+5BK5Nl5D!=nm=7Ee#70nrH;4J9Y$ZF!wGhwH)G<&|95ZOq zb5V)WnUN-wE|A}=X=|>^wJCb5hRBL5kP8*79Yj`!Rfe9qt#CNAI+Ht>IqNwCZlG`S zZrpChpgW-Hp~awU(5%oVP#Gv6sPd8sF({Mi}VTa2$(<0hsjYF8aM zBzupNl$x1(muFjgp8Axw3-Tn^WD&{5$+gH;hMr=+;oC5MD-J2vDxNb3F()!d7-u># zKL|d6L03k1LhnprO_@w#OVLr+R>x9LTnt!5TGV4lWshNBVBfTJvt_ZfI3qoiU*T)E zXnL%3aQlKI&UM#i-f95v;ZsLJrb)!^6VwkB3WYl!CZ1;=KIdXba&C^cTs>PoYhCy7 z;(q0w;)*<*_|vwZO>1h+XdZBnwvT2AYO%7hVhUcg#hrQDdW_988}k8WoonY@|M>Pj`6m#aCe zTl!m8R5D7Wck(=!o~psJgZ6@+=Uz%Gkfo5{ks%UD6PXjcvg-KeQpQt!xV=Q!)%Jdo0xk zgSzk?yx+y%rPavQ%w-RBQ>4^g*e%?(ADVFwGe2}!)^RkXs>OA)MtCxoGNyj|arrg( zv>R3`R$R#=*~~oWUoNfJbhcGHbzXq4Mc?5FMEXW-CLN`+rrx9;q!^77kD-s+jRI&; zY04d#H)Xq9HLx_fRLqnX^r{r~^!l_Dl_E={OZB?;J#CJfCeIhS>)H}{?mT8M1KN>1 z1Qy!oV>vK6T-m7E7dLj>HReU$ihX~Pw3sx`Rk&1-wc6Z-ZzRsx-(IBh4f6Ra+-LJ2FPzz3s+ zXXmx&`#5OaJx%Aha7g*{(*4ei#8t=QXVF0DSq9yknc~X-<6_9gTWmVa! z*{qZEiTtv^bs7v;96jn#zuCq<@n!qpY|niZ*34I{U-F&`9!t)r2C_=^&g}nWPwTIB zU4P6A_4EocG9^8o()tI<1eH(#8PIIw{>Gog3jrcLe#%mLtM{KngKYXy2iFg}A@)R^ ztmrvU+yzZRDKU1wJQlp)uIf>65A?ghK?l{%PajZty61O3un2Q z%Q2H#cXIuh*RDh6?F?iv;9A)2_pkgrWAL3iWVeL5*(7G|`d(+Un?UGS>EEM^)KC)E zsuJ_xEo*J8t-Y*s=E~-M%Q-B7V6~$6q9#g8dEeM;C`Slo_G93O5~7N2dk z>9B#)bMM>UgE?=~h^mM?We?{da-t~6(WUiYckXuLmqr=7R2Sr8D8Z(@QRNrANz zvqS><5i>@ZJe9~XSh0gOak6pnDBdG&!#RqsN)L)~im}tYCEgjzHqN=nr~nlq z*_H70{#It(+q8`l+4epX2T4VNwfv&^(%^jmV!v8ec^HFKi#xXf6V35X`md2|i$0Y% zNt~jxA{o7{PDwu~k7J3!k}(vG7nVy4HS@zg(!&s4w^5c!4azO5Ldtb2?GAS5 z&UbM+CwnPnE5UT%R{P+2xhCm^(XW6}5o)t)+i4W2TrkYHNbc$_Ay#G;hP$4drENB+(7og?(>G)G=W6PooNL<0=X;D~P&kG) z2#Ap4P=Q!Naje1qp?iIl&Hhfhv=#v_rpDKp-Oh)o$Fm}Y#{=@iyl+3m5{u&YGZpA) zYBV?mRH~qAY<%k8PMVPJ=)76JpWZzNoi7t?3;24-pJiNFokbEbzDEe)aDqAsHzR3> zAr)dkhf)VC{9a2_uH=Fbx9NrGp_t{GRSw|ssn;c{DF`c^FD5R@D6B3F&s``mDbmSv zuoyPKGnzFtH`cc}HlZ_$G;7{L-0gRqbZ&IAxOuugxplg-yGDRaf)a;GhrWe$2)~O& z4||TFk=Y_0B$X)yDMT~#m#sM?LN@(rK<=yy0_G*IzEdj^7?KD8D+}k_t2v3&k6bTQ%ywLL0SjR zXU#Fq%QfC#6OAs-sqR4V46z0tu)KK}qQ`f=ts`W~p6hDA;r7|L^)H#INFH}#?=GpwP>;^Pw5=0TfA6mZiLm8-DKrN?T)IZ z*O1(tJd`gF<~7({*}EKs*<_kp8vnEidl1quR*lbLnh;naj?>mc*hZ z$j00!5covrO23tNJ2+gw4Sv}_S$JvuQ)8oZCm`!ygFpDm(d^nnVYmm};{6S%T^*>B z4Y)-RVotjDn+iXWxhaq)6>z^dmLRJeaH;ie&O7K!vWs#r76n3_KZ~3QXWt!g-4-(C zw<<$KT4BZt(2?F&BScrI@<8xB21xE8QxQax&>{+ZHOBP3JEvFfm<%A82#p|GcFVW{yFO)+G69%4f#m^Q%5k-wg zaBS`+p5K6fHsR^k{&bMzU|2C_MdGGO^}un~OM+sir4xASdOWg+{QjH1_tL-}>>3S7 zy1=hc7l-{Kv?sK50}Xm~N;67|by2k+*p4u265gqKKR&aKZ|l@AoAyG@V%vGpbK)K( zA6D;%_`8{=xj1<`I7S)iAH?l`TaLbEEkq4K6vSG?7|Xzpz0$DwHP)bg4`1eN8)?0F zYrnMEuHNjLt+@vU9?C&IIMoCe7-zHW!3~5Nr_Bsr32M*9IDq>u?8+!&2<-xbHLYg} z_7YL@1c@MMWrZoSzB3mgJE6ytZWbY88E2fStkvTYxKiu!8 zZAMNST`qeVhaiUDPr^FVRvBp_Y*}t$MdGA5q~ZLLlwrJK2&y~ERVp>gwNlm6)omX) z|3UakIg%qr*Kc>qcki$lQU2H9iQID#2dd~yDNc)Xw)wUwj^nY8l`iUzT+VYY2)DXB zY}*A}fPox}Em}&_7OHu=Op+bCa`HjK2Q?qbe0^pKYWY=>L1A?nd3k-&9~$v0;VS78 zVn<<7lHQnZo<^j8swNHUEX?jek-vI8;!juEU73eqI&B6 zN^3IBt1KdJoNddfFyB`<(VN!`esPFy{uxGxT2*B?MBwA+T9;K+&=7elrH^o7<#_4X zef2BtP!F^;6+3WSWT3CJCPf0t1a=pshHP`VGx=v+CTgZ}HhKETgZ+u`tL%vF8^kNu zNNiec&0z&PF?wUll}t^FivU+;ZMAF_`n%a<`o-@}{UH1`>wTJb`k;k9#xbV9K2UH}!EdZdf+;4NSm+*B=a0`I+u>kRL_$j-G7xP_#L57F zXvk%BX)@G8Lh$c{(4w|vAZ&i6)7W&Zi!!xnL^o`zzUW{Do)o7Ttfm0 zAmiXc#R2`F_7u>wEgp@%52<4!CMw#WO=#rvwzpWNVE^eZ_KjZbfM+rkcL~N7xxu9tkiq;s0p{D2VJ3q81XLadB}55PF^7_ucuAyZ8nc z!d|3;ApfTs$_d^D;6k-|Ugxh>Bdo9xhnk1$Bcr0D?_6#7wYVN9?36&apEs>dm#I*Q zN=S%kvc>7q8q0@cpVc;}dL2y@>2}eYVXMU->onPhPiFBfX%?4TnC;VH0z3i~_4x2m zOCbL5GW<2b0_b&HwibcnH^_>Lik>z_DEQcs<{|EKPet6{iXtmL%(F~v0Q!$>( zEt%N?isa+~j_Mbt@+Q4rna9q$ zPoeL-gO;|+B%)_yazkcff{#NX+e37PH7*{pb@lYBPkpi-I89Aw9J2rYZY3&|!jLCSaH9jCPj< zhxjqql{$2pF%83_9Mel=(jS0(iNetA0Hw8d>&Y|xSW{B}O!^iom<%rY{X4(0v2oHL z1STud8C_Xzj#NSTk_37FtIhAP=cDTg>BVA^=m(q+5QmdlDpBZM6e5#Y@wZ~s_G*wO zd9vZuX3_#S>CDkQ>4#G}9Ain|qeOIS2~>Wig*lC~>4RCafKD&@zkYZxPgqLj z{dR_Nkf(%UJZU^MA^&td^&)tF%b1k>+b~1rP}YEnMgAH-0X)Q0#6?CDW$Mnnq;l9k zL*Q^+kV&F}XPWIiEQc(EpUh1Lc6YS}^l7B;Nh^obWL%o7uz9^~#)M+@zHC~HLD=l4 zJZL`~dB|TF@)tmvR=Yn(;6f0AZ&oHaDKaADV9Vl7L3lVp5K>i5!n|;uz`dxvs)rDL z$dF90hY+)`KP(W&gq7br41n~<(Ae;E+#NKrpQX7 zxlKelsF+oe>Jj*hHCq~B{gKH(Q&I)Via5kXG=AXZ!>NXv3Z;d1A@qtp<2(e#(Z=nF%6`!(N0)Iu$n@?f@G!-43d^q7HRyhgLSW zM>+Xjvx+}{#_uYY>l86om`~G$h)b2>*ZVfP4_G|z&NZhR#*W->D^X$2?$Q@QNO-rx zVc4}9qo&{eN*Ocx7i`)gGP+x}%&2`Jj_89vZ_#tyZ|nQ!rf#2*4-B`A#-`$=Tk`@6 z2K9@L(;)kLQPLN^rMaxNZP--#7Fx28tg^C){#m61SY{1}X3R~5dD_*hR+s}g?%Sho zrRE)I+thglCT3jmXdRoTXCX~O$s4{LJzh@$8o_o!X>r=sbQZiA@9P3It+vJwC_m3{ z9_pFDXS+WL_-(R74BSwDR~*A)bPrYdeNud9CB^!Me-U;wx4CowSnt?%*GzoLUP|4O zvBJdt56t=#AeVk=jg5Og8}!+cA+{57kUXu+`l|*PlBwL1JPTK24 z|7C0B4l>)%BkhO@WE3SlMqzb)qS+4L)6y#1fb0qmmip z>jrr)pw1tmLQC5d38xbf11Ru&E1QvL8aiN;udA;5^QNw6wtuzElvEwvGd?g6KU}A5 z^LA-J8nB))fmdNC=Ql7zR|R4lop$YFuJ2RCbP`h2xg0!y|Gz4DOjWDFQ;t~$sOe)bdCw}@k|BxzX$DV ztjooQaJCPNswj2}7J^T#X9rPTnKg`)A5}d3G3{ea*H)-&lRg?-7Dx8JSEoy_ zc_1e7*B`aX3~l>l`DPA;kFNVLZ0am0G=5XS8xLr22lV42VJS4#8KaBo%7ATBsvoEf z*Dk~3{m>(dLz$8@$xM1s8qXGKvCVKv-JWVM3@6bSJ`R}SmhA{bcG7FgEoQ{(o1IMA z`5nG1xRgD;F^{8hQBEmjCfR_f6HpJ$N8bjAQ6CV^C7q7mTJQ6Z{J$QDNYM-->`gor zx0~irwlpMQeN4{n=7;_}QJj+*_Ot)x=*U8S=12oO`h3G|Y5doif+@S*s_Kl~g3^MD zTm?444S>*DjA6lGA{Ox1*r$+$Vc8X#W#P4)}&S5&fbW12<&7keiPTe^=MES|wd8-m%%#5UcM7B>@QadC^I>#2Z^#;OsuMbLZd8%~5)HutdSsfSQ>tiDG3Ck(QP_mUYiu#Sx@84y&>3 zXa9wHNkJGeTJ<0pyM5-?S;)At3vGet1B0?(iX<&6*q5=F?Q;Ac%jIAIDez{5XBM)A0{YZ? zsG^L}uY@kmpxl`e_%wNYT}y0HvhGPv1k|2DY<=jT<8{C0wd1{iUqCzL_k-Z#`G|}( z#=5;N`3wbxQ0Qv`H+G{`%l8Tehy^fQHx9RpHmod7o)45a=4?GYK#?fFR)FQNg6&d!2lx_;o3P--WQaN;H}1>yShKwO4ZNeTdH`ZZr!MMu}@&h zXwr~#A|C;BOdE76Pdc-LT5%G?ebS_U^}I^5R&w^FYYD+$-+n^*F)GbeM)JD}g0y_% z9dq6ZhF|}Ro0>Y1(N&h1yZQxH%Wp*JWGp;iF9~La97qCVdx{{^sBDKv_7OfS$iU4m z#JLl=IbeWV%RJr8a>WK#xqm(OndVQg__dM7jAp@%Z|p9@j?4+M$D#aP;jq~c8l05} z)gxm7;kgyxN4+Id(^yAfz;!`RY@bW)pC9!J%&KVg?GAey#jZOP!y66(E=5N&|FFv~ z1h9Y@JRWmg#ZzINdmaMkmqYeH*D%8O1krkVOa_Foc`4B-@;-NT(Xta>C#{yM1T31068KuK3UhR z1>$*jnoQmaR-s7ZFeBz&J_V_&4{wt&?HWypY;yReuWCg0N$wT-^tVVa-+H*E)UA{! zMVqt>^azI}YGzzBa3a=xC}Em0v6|o~>o9uMyk0a)>ZVbZ37rjya13>&ZAfYcA*Jw_ zEO(P!dR7o5qGaQM4xzjGp!~Y&O>fTBHAf;2>0!1c)V#uVU1K(lf1?tsAmP!`Oo6?Q zV zPUS=wk1y+3Uf>^}1qYr{p$jnz5692J_x&exDMbM>zR1Ja zKzGY0W+D0!BGU8X?z%v;>}XkA_%|H=(|$ygT)u@#VF&u%rhbvF8`|*U8NZ|CgIs zh5^AL!l|LF!P$b`{N%n7NuM1-a7;-`nudfrqqaEyi&kGPR|vV347A_>a*@7&t-@XC z@=_Bnwbp%mO|$Vdv)krGUqA%uE8_@~(Wnt-;P*c3mKRwP#}i5F#N%-Iqw0LV(aw>< z;Q+rv@;f_@yBgB`pRn_HZHg6OysUx|wVt{jx1O$Uy55S@jy@Ws_cXujos27At_F4_ z+mO#DWqXq}+`|jnT-A<`MN<>zhGo+OG@7#6zpbVYNMYxAah|uLc=f>I%t?vuv#{ubGNTkz7xo@ukI(B+Joa`r9WeyLh77imYKQAF?G!te+45$oBNIw}%-70s4P zOXY){DcWIdQ0+*!`?1#db+BZ)92J{xN@Uv!ylKS7N4+TfAwdL4Y=O}!m-}b^QJu}o z+HmVS=&u}tFh;hR*avZ6ly6JhJ@ImB%pOn=c3J^8r&Bu|;blDut-~vi0A4?XD7Bcc zjYI%DqaprkYNc33KPw>-+Rv0X^tvVZodOQ?yxR5f1!J;2^3bB$VydKMhr=Ww9s!P$ zdpEllr4fgKN{wFS=(sE%kNn(R!5Jo2)_Gp84Tq#+;{RG0sUjQ*{u)G{@{zw#+S9y> zJpS(jMt38!LGOe*&%O!_bE&i;E&%a7@=#}Xisz0R3oJLDYa65}l*8^Y0P8|CpP}6Nk0Nj zF!jIkw6EykDb~|Rq-l*`M5%#b_uyTb#f1xMplOC3V1{DJ-5R7;1B)RNESy9nysN*q zMPB{uZsFRcs3ge=YAmQ)ITo?5{}|@iW`Ji3$3p<6)^f`JRXvsD3Nc92_z(lQJBFFA zI*hl@UG(`w93!{vOaEQ}Uic2F3l+SUT=B?S1NLj2|I9m2n4n2)fA71*KwWps$$Vq{ z2T%N^;^6$2J5jJ5?ibDD_7KZ;|z>ig8#fhcyqS3+|$Lkbr zr+Nq>E=q}yNnG1rL{5Sy5`1O@%V4E+!NF0vBUdvLWR(!0D){Zb67B`zmFnGmW~{YR zIZavGd{i;G2z&)-K4px(tvdH_o&d>uy^kid@QY~)-V+NW17VPm*zcHmblg4GwJCb5 z8QCEjX80d(D7{FMu*t1Kd49^^amgWU1{S$%J&V63$M_f{;h1tY{Gb|WJKS<07e=ch@SAV-CaE?nPVUOo# zGr`}9sS(mvhu$ICQT$kBl$nYhk_OioU4Yzntn8`KNeTN0Tl~SWae-ZQ1T9u_zlYEC!yVofd`ZdTrbAuq1GEdX(XMeq&y^Mk> zg#csm(A7hGs7F9NjrMzOX1v+D)l|}!=~9pJ6YAhTucqHfr)jpj`pTP$Tjz&g_K*5n zo0Gj#Cz3uE77e~JV2{ORxXf0{j;zQf=NI(ra`#R$Gb&Y~;r6 z5sd;RqXJ#SEeiN}+2es$KAX49w)@;Zvq#UFUjbGR1pLv#A)YAYRnj6I)EJ5xKe<4b zs}?q~K6d;5xr>&UixkN!okA3$M;ez#7t)M76cu+7ZiFRhrNI>GA;L)0E9X-t$p}dN z&dy?zz4Bg=wvx7gvgkNsb6p7vv-yh0r9}Y&dDiJ@M=TS~XWzYUi+HhQOvprBW48_c zHWJ^qME*MVw{Kw3irAr`;5k%$U)|mi^w`)K5jIY!=iUFSH21|0JL|aVxVL*>FI28 znf8F7+Gc~Dx>Z-Q9XrvA7s!puhd-Lo;miQ% zXS4KG*V083fpasaENo+Ka^sBsSHATZ`g;hVRHuND$l?%!PDJuczCnju+D5HbvVbF8 z>{~H2>}VaRa-!VqFHta+>2Qz@J8lQfz8ZN2xyu@zm6R3z!B%m6hQU3mfB}ZafX$HkQ?rpJYRgpkl1M0OLVlupuy5xDW4?38I$@y8?ZkwxMK0C5(=V z<$r-x;Jpqq4yx3w1M%4O<>+UmYp|RF`Kmuzt~JpC1g(ctNB$e8PD1^ML~6^u-HY2mn)w%|M7--496dK zKVK!{=huI}GS$>fyU~jS4+tJ0{ST*t1OmYq$fuqSoIkd$tghwls)?qdCMmo#Cz(b}K3Nze9I)_2 z!4*tqA(c^I<^&;HK0{QaIXwT-%Go}orVZ|T7&+M5E1Cr9+KwfNV(t!?Il2Ay)? z%2=N2?8vtISPGp;Sm_p%$si#Mi^}mgtxj(?eB{0}Y&Pql;bBQu`}H&ea$80X2pH-A z5JVwD$;p(Ov3$&k>U>F9xY=Nda57WACO@Bwe4*G1v7H}U7=f6(FCF;97*^FOFr9s; z3Jx0Dqc^&A0Yb8p^au_yi%bi6q=(YA9v|5YZb;||vEt12O7#a+Ns(M|;B{B_vQf#& z`&rl-l5`Fto%*qFZ$4jDYW?HZL>Jz|#J;MBvz5S^0tu0asJGY6PjM@&GDB38?9aS# zVP&cRfgd8+$vO~`8*(j~Vo)$>LAwp)orKI6=`0qAH0Yple1z6D;h(7q*k3&NZ*lLd`5%E2f+3e0 zfDk=hA7M$-ooma`zphA43%VXUls`u6o0g)J?Zf2lAuJ`z%%tRMm$+&;AC z4_~UMVFjna@h?T z)6x`3u>FGr^;H_$P#vk=-LL(rG*&C*{DOkyZ4J22N0EI}xM)Hq*b2ovSTi%TJe3mp z2qa>F`2Vk&IPd%=NknRvcHf?FrKco3Jvm{)K?%o`q@NXnbYPJN=6>C@o#EEPUpaV< zP7p^UDD6lyiOSWtetx_An#Xo=>p4e?*=yR_BDo#>H99obrL`$ zTuao)qs)-ejEv8+n9^v!B$m;k++w9?C_SC|%ld}Q(uT=SQ2MwF7W0c(p^Fxqqw@0* zs^sLc!ju!KxOn4(fdNB+il#{OGggFz@_Ia|8@zB>TDXBqsaHoKBqODlldhkQ%)@13 zgU4IJ^|nfh7u#>mGlt39Ku*drGrNJ7gb0~xi#XaRs3n%+NWsox{w+gD?)E*hNf(=* z06@A@hfkAaeHD5hk-f4K$}XXv^oeU!Hd%^9?NCZ*fo9yVOZonT0{@0X0i-WaRcI9Y zU*7uHQwe*ZII}=^%E#+r>dIT;t7qHpIWh-lIqID{=9$!?E_%KwtCL2WZyG+%;kzH_ zvKcn{`;njL^F5#Bq~rh}akdaG32hf_m^Ip@en+H>0n1e*FNXDNV{;AGlXkX2pG#im zKRuYn_tmu}SRcBnn(bD_$$xsmtKZMhZNR%y4wtTUDG&eY3EOo)kb`ztXLBn}?&2eQ z)y-$jVHj>?a$F5^gbt)GAj*m*?GP2N$kNY#CNGDd%_}ar_ z;`d8SoA=i>TKY>dwxTb~5NO#6$IJ6x%T8^Y;nu^OKT=Cfcfx8t-eb&`71)wMq2X0WCaMP1OI-S%67;$Qd;y$|p0^4u-BT-HoMaH7TS{sC%>FUY|_2 zv|hn|BW~x7K3!VM0~B&%5P(LZw_9e3q=pxSd0&7PDp%4iD`EEAiZFi zo7~i9r*+&J@+CD~)K}6KKkFRk=}pCZn&|N|3uwk59F!C=0@%Sl-mw;Q7DfE70UcDZ zo2P1gjf;5DIs1EDDgvz+)_2H#&>DE%Ew!VqgQ04AIUxZi!}`};(7v9&*wFAsA8!bb z1EI_|u!5v_Z`@Tz^e1j?7NF43&`Iax95`_gC zaSD>G3&SYF=`Z!d4`2BL-H30F(vN%GbDtT+N#v(#2V)lZxsbs%XSZ$Jm|ts+!caYUewuM9kf4?JtvtBHEkmB5BqT1apbaZI*N zh#Xi3Iax5fW~^Z0A_P4QYjA^U98FvEU`FrIOPbF%&jlC`vu^UCK-m2dH2X(_avSa` z0bD#csi%`CWa84P*d0Dsw-^}kM|>^(x3WtXEl{Cv=<)JNb1q*;-2z+mt2|Hk*fw#A zvSDW2Wl^g0(l3cvS|eL&QGQVvE1pPj>b{YB-zf+inC=>UelUm^xpEB5?2h?$5ye;- z*V^(%Jl6X@1QjhzHJ-Z92QBaO;SiozHrrM35wyGPMy{1iEH!vQ0RLX+ft1yg1F;7P zo|!F-z9FcP*Dvi{ap=Ugn?SgyHC5>}6F-JIQ6_(g!gE9J?wUG-v)iuuzs5|3c>YoM z=79~CsN4Bf)e@um#>^%XpO(o4%(trf?wE0N-JDgE{^t+vXn7bN(@twTCO79KFTufG zOcACHcK$-cap16KI!xygwgICPt$Ag`2^CTw#H=3|x{RF2%3X;^n9J^Tb+OzKF`&Xq z^M{)Khw~9k@xbT1G_NwyF-~!M6oSfe#(i%NbHWTq2j)Y8H~r;=(()hj5TGVR+rugW zV`*17onIDVM!Iy4Yj$+guD0M0`b{0eiy&*|X)m8{B||S!;rYI47Wn+G#=E?4H>oIf z*Ly~$upC`2l4uO{>iDeibrt8Qt<=RAH;;QStny_vJtdLMNk-{(+6_I+QPHD10IIbO zHwuG?D7EUPwSG66%f~tPlhQup$LeuLW>mg_kF5@)6ZKE!v3Kg-jaNkinLBemCL%1& z)F$BP^2^1g<0o55pWTTY|3;&UED0R1ZGh|3O24V4J%J;kEQ&N7x}n`%RN@nK*c z*6D;@aAjgR0=D0$$|2oAz#W!mZUfY+(S^djf?gC@`7L*)din?k!AhA)QYimvREW84 zUp*jWyZiIIf@g_|ojJ62L;=6nCW*s9=W>mx`lhHv{uqfblj@V($*ary!ni|3iKSMB z-|zexIa5Y}BM)w7W=vinzThGJb&HE6b_yKRzK+D*YVi(dzd_D_pJ!*cXLGT zcTNPnwQ7_;=vAYe(pKYD0Y~pwQ( z*Bxgwy6S;J3b z@blrYu1@nXT`oO&u{;<)Sh{c(Vo>>XS(bLX zwKaTdt#C5lJ-9;T@WaUhr-+L-j8Y%(3fH=o^&ec*X{-0c1qLrFp^PaHEnRtD*|@1R zd|31QV3(O3c)_RiL+=_Pu8#0NKI?~kel2e0*4`C+ZWBf!&XAZ+ADZ|!z41jzwA`Se zgnUTlOX$N+z1{SqMj_J_?;U<8=Q+B*-Xg$qx!vP0`=PHbyAxB??ta&rQW8(Mx?sx$ zW^6vVIn%0!#7;5AxcO_zdDCfQ(i$m=Vkv5DGuC%>Ow;A3yM@l%a&lLgd(X=c_5h!FCQPe*_?IT^KqfhL z2y_=ZeG2Tw6^HEUDX1{4wSI&G=J>wsBQ~GMGRw(Oe&DewUEH>ZZ%wNbXnnAIKFHTJ zL?4>QYZ5RmE*pAjfCs>x{tc134bl&|Xsb@P8BI-2k7wiYBcKR$NUqo&H#JMNaRj@7~YVGH1% zF4_&f*?D=^0}K%^l9m?QRsx-V;>KI;o6{S>x-}U50)!G`{kldl!&JxEy{hO+Kf<$k z3BTXtuS>uy4OOe-Ju1fY9p!8RPT%1o(&DGUgkSBj<#k$gN zFd6t2w=uS|^Xnv12PR8wv%3a!`UoY~wXw>dwW%chVN0rr@93k~KGSjrWhm%!LD0lr zsJDQdP_c?gv#~mM?0O`=MWpKw1MM&6ZR*KkE<$yF_E37Wm44_nl=pp~O!^2R<564M z*B9<;UCv0*b`HaXqrf!28-!(=oRVOthwcrS87WxMwkkOsS7eb@RSfs3sd)Mj&Juf0 z*uF-GcG$0}}jWHCzCZmDK^ zg)Yp&l=x1x6t#lL>vwiwS}yz>h{dDd)1BQ%ku;QIYk6~weyfUw@Bl=-)ds;xcdKR3 zqkLq!Q``6BHWdS7-R|#tw9-Z^Dd|J|pkM!^U@*VO)H5F>9lOH(iGfiJ`Mu-z3-&W$ zd}p}TeWy@Ens$n!TS&KG+S-XjdLwLF9ca=ZTp}RysM1|#Hp^2*unA_fTGe-kl6(p> zY`NQIbz=Iwh9+oO5A<4M8i*b>nWr~M4#?bl9~v0q{LTqK8ihN$y)Kko09!M@#_{O2 z5*J!+4ieFUTQ56Z@Wtwj7ulU-ay%7cx!GSjyfnF9vmKK7_|VaxO)R(*+?}8Sf@^|11oz+$!QBb&B)Ge~ySux4aCc`m_kQoa zZ)SeY{G7GUI-J#;y}M3Tb#-+;Rdph;lKqjoKh|=j;UYlyNN^igpVAlC=~ap;r4YEz z1$i9YQ7yA;dX)~S!q#;`we~{oN5%8JAl+$AD_T^P(ByhJt|*>wZU~Mp$#Ox-PhqI_ z9u>{(P`GO{Dk@snmCat8%peXbvtQ(d9Uju7XmSObE$n>dC60}e>QlPpj-Xd@Wk({E zK^y5Qhncq?Ny$CwdI~DwlG-{o4y!k$L&3z%Gas4W{Zu5#cRyphX-sH_uAe3ddYk(cOflF z75cKfv;>6YyE4NBft%h6(e{>CxtKoJCW5Ut6APv{R3gcG1?bnNoXO9vdSlYK5jvzI zy4f?VhQn#rUz-Qb7Cd2RbCG&*$F2mDmKJrsAFu_BN6A&HMr#I9$dgs#r(z)tW1g?x zuZCy~3pF~tEKgi2?~(MnA|=LqFQdf??RK*y^VXy9%gYN9tA!W@d0#M@qzGnKu+M7q zdLQkh{j?sOE7Mejb%|3MG02Z!Ok*{|kH&l+d~&GQOp79ULePJvQI-^EUhfW%7`L6r zYWB<)6~helv~%R~|GlYrA3T6WV&CDC+}{@Zgw_B!$wj(%hS|>w4F}VeYb#uGjFG#) zkI=1Buh=WCiBnN-`l|DwHZR)JgxX5cenHjG*CXy>t$iU25f03UDyh28JCv>k3D9iq zMs6#~n+w@czMN1VrWtzlh{`Wph%YCaQ~8lgxVq?KouNh9y69@-&gm?yR2dh6dQ#fd z^cVzrmF~1aTKaoamvK#J^|afjaxGmfl)8c=vFB4)mV8~%jV>3Y3@g3JVNvCMR`M4K z$2^Ja&J%3t2^gQF`^{b%f&f>#m5j4(Uh5C+?O@9lc5~sZ6}#UY$95V_jE-YWH#I-ftagaIo+TP1m1=T%=M>yhGg#}p;u;V0=ybBTk`kq@9PyiWiZqoGRGv>L&y_o!@p%c>~Eb7|(Araw1zWCA{ zNJ-J5mpi8^H%Y8d*uJv^t;8{h(V-D-o-=np?)p3eCJKCe9BI4nKsFwN2M%H$M=`7z zMf4)$zb$4hv^cq_VHUfR5{U8Dz%v-n@?dK-aE3vpVUxjgWi7Yrihh};lEBNdB6>#X zifnLJ@puf`T%y*s_WM+0t{c5tTgNCK>N-bQfz=x9ootQQ)q5)s{~p`bu2-%3&KR%L zr8#7P@T#l4^jLv7zS$VJacD>$FugmCRn6Uz@?{p9+UA^(1g$tc!r?g`YpMI;hK(ol zKkpk<#O;xl5SzW^Zn3mABrzE16IXr(R1=Jt3*D`#&deE|cl3TSyN~~NxG7-&-BBjw zc6>h48O*n*hL%$jJ?`cFcJPTo52`5g1EC>F(^go7k?u}E@Meo{AS`Y_L z1FT=?LduFgL0t@K61~X-3;m)8dRor1V!u1wzy7j24p1JM)Z_{#b(pK#H^{nA#ox+J znIYkpDaEd9Bb@sgS7FG@W4=_s+ez1^-P^OBQipE+Y^1kDlAcz;v&ZC8>2&^)@OY6$ z6X*ouM9!HRkjDR*qmcZ3)38Bh5%H`2Bd)mkswbnqI);eSYnt65Hc1R806eJE^ zUTz9RI#LUZ*F{71N68w`m4UniT}Dg!*81`i{63dh-kPy#=hmCnnFe0`sm9j4>&-@n z*fmfTfruk|WmiUCu3OApUYbbX^uiOg00=EtylApzhUNbY6}XI z8AbqCvhYksPLj(6?-GCgNjL6dqs!#Y1|8sAMl==7$&0c zG~(AVME?)PC1IC^W!Q7K6{KkgwbqTDRv$fv&EZoTpyi=@)~oo!-hVUa1g2Wi9Y`uo+m1Y7IaASD~mHCv3XR-`eaPTTAdnX(YG5yyyUGY9h-Xs zQx264ARi+C0x9Dl-XHC-qeE#MO!(Cc^YOusKqsU%0ch*La97lEZcrSe#Ii3Ke*pmh z#OtdCydVSP?9t!9-_C)csH5c1y%B8Yqm)0zUX&n`cO_X(iz&E;KPHbX;6XVZ8<=+W zzd;4!t)lB`O)UIQpV_rQR+-LOTe5@~Z_i_c>h^17#w#HHFNcWHj^{G!$iH*IXlmhw z;js8rg=AMw?o1J{9;7E+QN!6YpgZ>Tt7i01M+FalU5P0m%{q9M^}bNiLk zNGUHOJaa9lTIkADLjSq%j#>f;HHU{59%fZ4-0G`o`h=e=#vZgbO5&4GiiAKU;}BhB zs96FSjG(b`{sOcd0@7iKaLA7vVIx(CU%o#{u?w1)2Nbs=3rNYC?DaQGkP=)Z#u<4M zIGN6810-9>_u^9}@e`a51#(wW?IgA3bHk(evJ}A(Ap@JK>^SjBNJ!3(>((}R`Cc3D zz196EJ~Q@HzY8XsK)G6RT>DT=#;oktUwu#{%tSI($e~CHnV=L9Yh*nz%`80=B$PXo z@mp1c={i*2UN_3b-q;zVu2GUFW>7_qczqfK1`bXDzyvD{hA_CF&bo{zGT*^N`Ys?( zh;Num$T&|yKtXLC%oNQxJ2N*r9K#MsK5*Girb(tmRoq1t{PyZyhu|35$*>@57-cmb1>UwfcA zoG-|LN}2#%Hp}$P%r6oKMJ$>Iry?;FQsa&GX5D>#G`#`W8rVkIF$K)j7<^1M9LWl`!Dt8BglI}v2Bmt6iv~Ko-xveB7QSxZHvD4g>oS=D-fwVu}zR}ar$iqhf zNtFiLT3V&o7Y~9!r4VutNKkmV(oGmHn*+zwAg2IRO|FisWNt0Do3(ImYq~LwucU?Z z-Daqy`{xNI$b`jOxLmLdM;K8 zoZ{ILv(WV{{KasjgvtA~5ZfbLC8YA|KKiCZU6@At2XMi)O#Rcb0Su%4)0poq3?d8Y zkhGJd3K*ys2hZNgs|RsU!GZ=TmTP<%4e3TtNPLVj8Chr$7t1Z}pI%OrG#edN6bA&A zyYr&2X6sP;HM)R?iRG4ZDzQp$u$^R_syw)B@(-*INWo#$W0MLQ@4SjI)55j?RkFz_8y%!B= z&pC^pVDvZO@B8=iwj%Lofcio)K+C{@f-5W@7dsYtCKpABc?Tt-zzwo=O)zt=8g<9k z@npzA1}Y_DQet9I%|^S=TfJdLfdk(FYD!S3XlS}Re4%P`YbmY_mI{JQGo#65Nr4;9 z{OG=+z6%8X8oWaIj31!(inH~&CTI3bUQP|x&p)&A8S5=qW382^v$NAwiVc)X_wL=ySThM>ntoaDhl%3(rmx)_b7P_WOR|s1uN(|KZMdGEugJoHBY&qh8Do+6 zI?cvH462QmZ@si{CPY=H1q}hr>MhSfxKX7I-*dOvsp5h)#`Dt;D$cz3PI_WykerN6 zaGow>P^rW(R1zpqu>}LbbsyGmsZ;~R94mrGoTcvci@F9Ebs0|II`0we^5i(05d3q3i_CEimRmkNKU^eK*lgvvW z%@&jHwquYYC$pej0xcFZEg~7PewC|Q>E2(kp?hNAj8a0$>cA$&ULZ;r3Xo8buKSuy zm2ce1(Yjc|*9NoO_DXj6>wW!7>`)fV4FmHy6y1(@^k03gX=@@O}R*fiAu|3sF;|e zMZ#hEWh_{zSeX>>=&8!gB)9S$I%rB zm!%jDiopveFc=6{Z?8}M)K_s89*0cLPZwJ7o>q)6H+>cJjo+we z30h&u&7YZ?UpUWJ6Iq-bccAs#p5E_RaFKS7>X@B)yf1PPG+}IAZA70N%sTIXO)AxZ zAdTi2voq3u&1Y7R*A2_%=4$Y^*OjIERXr?%Ksfug*p>digOUZO{hYce zre{U&`74NAZdTBRim3{x8R{ns7l<8hESfMXFx>l=OosX+KGAfZLR0b zXI0~z{_kjY#tgzV)@mEa?#e50`c!~@XhDTeCRUOD*xG1_2sxyh%xB`etF7hF;KBYw z2c|dBQ=Jc;4`r)#f)&A&s{yCY^;UxWKG^yfHS_yRpnSv5EgkA1WbfFOJG6G9gWa~{ z>Sp{Kze*8AHtiDxAH&ByyK&)gv^>CoL34wxE-#^g^&N1?S1ck*yzWb!3A=szvV_=~ z7+QgqdPDm_haBa?9dSK&Rjmr$rK!$pJHQ&c_ugBtD34gV`df%6gI2m|5v2#Up+^OQ zt+6(iD>0zL?bG<+@u zX=;Hs*1On@W^gcnI{SHBOQWj&#DwSgI))_2E;44LXbl?G*aiUit|Tpy$RjT=9r_Ck|({4(P* z#_QEhxPux_=EbR{3vH?`hVpRBlPjgq{2|(cBZKfsD`}_sVNFm1(_%q0lg@T#bl_u1 zQ;6w+}*8oIFH}GX@5_PDP&-mTUSj#74uLHx4DWd~c@+`<9qr!qGNT&gLW8 z&4*nG`2tr1mQG|k3FRO4v~Sc^%I~2Bg;x9nVzj%ny+>Ni*D}wh1Agf;N3XSg$3y)Z z3j&Uj{_T>i=Nrr1z)Y9Q(_GzI$7ohyc)0Mi1)s3)q}7?z8sZMs#rhd$QMu_p>eKgH zWVw}qt)7LktfXqU6pk*A;*?kA<~GAJEOz`b)|FF{i|jSsZ zq`~#(JWb8t-t$Gq#s-}?T(FR*)WYnI@2?v6ONz+{S2Wy{-q}38gBMRIN~X-V`XW+w zPTbPz&79Cb9NmY4#Q-1au(=mte+t)zXZg zPC5P5=bTkI@UnJTDfVUY!$wpnOH-{ftb zaJ9uiFZt;Glna*veBY-ru!IA?tyk#LP^ro-3&rV>rx6 z38h+P!K__L1}E27nrTf}W5tR@B($cZarsCriAEFWORj1g)w)mnb%fOlF%^%bhOL24 zy`1cl=;jx#Alr=03U0Wbp{R%oCYrk6@bH3)OFpt5*Lg`~aIhMJpRkA%)y^pt%dmvcEwMEbW^Rcjh(`y{Fhh3k z1fc0)UD^46;6~HNkEh1|53l`|un8@isoZ2qoJ`e#!+O=lT#d8q=yEJ9?=ah)hO=?P z+>LhL4jNO&(zgJnHx_(%C4r=yBeED0us;!^K*#ryEDTs#+j!+?F^)G@#)Abf&F z@$74D>~9R&1A9GKeEKJRKSQb4R3|6Ix)YGI3QR*QulN@!Cy zt0ViWMx5@;^zq>OQve5%ZY30kmFqj;97c_kso(sm5G~V}OXqyJ>})zYuRP;cdCzEa zKvf;X&87{yrrLWVMflr&(LL5>wDFP_6U9-~6NMJav6f)QWo>Z`UdKUZN{kNMuMEXr zZe5q~uBNHWGjlc6Y2J0>skI(vcU?K_;)9!ch4&{1@$GP)PFnCnumVRuWVCYrLL*(; zsd1N1E;_534e=yP<&!qkLXQ|8bH+!@v0ht!Arr(m6s^yuNYe4SA@L%TNq72$i4lDU zr$TGycnf$D4J2B#vzqa2nK9^}c^t}?%sEfP2pomdxwq-B2;;qIIgktnlN=+Fgh0fu{~+saNX-YS)N;hjFu6;!bH9+>MlU zN3K!nf%!7M!4!Ja2M@o#jYQf0G$bMIUwnDqpMlTF%!bLllD_vKS31(C*fgkf>=1__1_#TTIY+?%=XZ`_qANUCPi=NGsqUAn}?rc--tPURBr{7(CM(^;sM zzPQ0y*?{Xqa?;H_mbd3&06z)p;yjPLNI;^Cqy6UXn0OJV@tWNR-sGM7U3wH{3Jx_t)Fyocaj&c4&U6Ta&|<~VtojckP>aOn!R-P_(9;r2``%ii zo39XH-5>>sdrT8T;$apTHZgoFCbWJ&NP9jpd1fxiaqvUf522KozNOxCd4Exco%MLEeI=Zd>=gm~x|^dj?1k7bc2II< zId5h!z~J^CSMa7ZA$h^+D-S$X<2O!e$-akO*UVxpW4r~G{U#b3xX+K@S?F(p)1kdo z`sWeQsPDdAi#kX1a>hC?9LjU;326?{Znrn@hijd&>yWa9o5LhBq5W-}&K8H2&jyF* z%Ab>;SRiyyUK6nV$y4IrC+JDCd(20m69UDO+GyX@cg!+>?uPSQ)L9Yh&d~KB#D})= z@?o@avIzxAJr1fYbYadNxao8*DSSI?Ul_F7-9!f{Je=% zbY@=71-OlFko`h(j*}?4O>hoixt~>xlGrb{`vhk8uMYMJ@yd?@dDc8q;{7NV4jpgLQ&?qn@3Fp`jYh z4d+Ttwd})?I%>bEjRwCw z-Np(`**6#-U2DP=SPf;4~iO#!>^7DsmnA$%L77(6H+o}Q@79I6xs5gqoXpqUE)fzxRTOjn zwlXOFnl{-Le=UnTOM?<~E_Pz8E5*NWscSFJ_p}>DuJSQAW>Y@SbKYT={J8MaX0;Wa z`1DK_D|s0=xckD!Zw(`2mNB*Zhl>WM<7W-~O<(U4y`xyJx)~YIYgAZqzoVTJxfNcI&Y5k??O(pv9Y$$+$P?aAz7NCEyAc!4Fq5r>1;y8{$vrzo>k`$7hTdJKihWEBo8ORd43+l&@O)G$F5X#F~l{L zaz!iRy9bep?~FZV_rfpQjo&I=B{h=4)--t`XpYGoOz@v+8q5E@{74SUcAWG=rFF23 zjnCy^*BVqFHkCuu@1)k&LX67qNCZh|OqSfQ6tixXkf$vVA2FJ*-p}GU1;IWW6t6YH+iLL! z8(}i^685q79JaZ_wmr(oKUti+#&amS^|*Ixf0va0_<`H&LxdE+!;u}WRt>CY5`j0z z7^1T6#wr6$y~$eVNmoFoqwEcG<03|Q$>S<>TeoNq5GWdkFo%*#Y;gv{RqNsWDu-IS z!xi?SSY%e*A$>iK7pVv^<kS}fm!GEe`q)jRBA`Q$HFeN9%a zA$MB0#A9uQ6gYJPEuR>$?!P|Hb> z(U%g73RTY6GcaHR>4Vq9;~y+xXZaqPl#Wh9l`7ipReuJPjY+%D3U#=oE81>d z_~by||EPP}T*j(Vn5UW?AjH%3yLfiwW+{)`%zKIQZQFZ_16g8wEx|Pv22&&B2Nw*f z5l(pnFw!w#y07p8LQ&u%Z;r6Y<6bnqVv;a)rCHBT5=ZLGEI#?rgcIk)!Ph-tS76tW zL)tGS~mcaVIm69C}QQp@H1nh2+8^-%Zuwvv%)nmxrSAV#*X71atK4!sEAr z)-A3&V5Jtlfd39wyGi%_Cj<^R=;{)}BkH;%|3UgoL##VKzaa+MIx%Re!6`9S-h{aI z{#RnVjETS~!Vs6FT*ktEbx7fXpUn}blo%*`fzTp=2A#2i z;raZwV)^0@DDy!mNC3z*wy7b|=pUIMhE$q?vbAln9U2d>ukl)wd4 zda%NjA5R;$+$YU`;(sa;&PM_qyA)(-SXiIsY}-2Jt^>gjhF{*oaURlM7I|sPk;2ni zpqWv@nTf#IwSbq^<3RwIEl`a=&I($avRK--IGYM7YJryP2GBKvx{j1@SQH)%2xuD6 z<&MCq zA++Fs3>*6a0q-z{_cMUT=JS9(87m!EP~4Zb`euRKkCS-D!Zhb;-B0aXR4pS)PB4{4Z7jY-x`JxN#Rv zVem)L{jIwI5R9iIfc&F82tW&>0d@d87409=A_A=go>Je_#s9wzYoh{13KEGwh5nEt z*?KJSlsYFY(f@5&0?-9Fv6#w#h4q)OY7H8LJ=wI#kMC2(+b=wFP?uE#ctG1;l7v4_s$mZoD-Zuy1`YtopXt z)=wc$nlGh2m7^Zs7~!>s@@;9~Q8Clx2e5iRUk}v1vuUzFRKnlxrF~my(Oxc|a|Wph zzTXJ9Q8}I*lA@>7X1YvVrY5wonn{15UR8;kcEdC$b1+D*PIT{>PS^pS5 zV+MwwiofI|{=q8@+ z|3Q(^N1Q#4%fSk4fMatjpD7C|EE4-0<)z}PM5y`L-u3nDZyf=3baYtI+7-xP|2uj2_=30-C9|RdO=X`IQ!DfceH<|VFqD(`7(|Jcc9(|!4A{n zanJ1d2mg#^A?Cp+(+iV+yxDeY(B~ZPWNvMry}NK@{GMF(qHEC>cbRq5RS!H4Pc&i_ zDeJzK6yzbf?A8FuAhLBmAXVX5c*|vJgbq-ioL3fo=aAdw?RGb{E{%Nnbu~mUjHsrymbr>pyRsxyz^!vITZN zDiY(LB0X>P)blMk>5-913F`VNI1zq*km{vh+_(Sg+Dv%>Vasp$1)Pki=+_StfaFLt zn|)J${*t*eOKS0Qx-B|Eb*F-XR~U5ze1u~JCk1YoYN!nb?^ z;?7|#l%YBwsrtZD_z!9eWbuzL+KTQ<_=^)nYnn%Z7qfX73yH2fRul9v>JVE`PNT$Nq5M-nYCp9}`j%uoC{ z-*T$@fyrA*BkNevs?e>2`Z*N51~0&h$3zv}n9yFsw<`O(Oy_^PV4)UrGX=HF?g1Y5 z&R~ejH%b3c3!`)0GAtAf|Jmck4EsZ;Wt5V@Z9>%X_uh-md}_D&A*!~98wK9S5HS)e zta_Z?M8X@8>2oU=FK?jSneyBEtuf5U1k5l6w8j8ic#^oNR7bh=W`+o+Z->|iS^ump z2>K)!?m~LW_>V%N^uD4D}{L>?Y)$3yBO`LrSn(Kr`s%Et@mf^&{XV)mn%WYJC{TgO7@?qYJ^~ys|6y2m~FME z5fV)pB#m1{`X9P5W4b@~f(_#=cR0Q?28nj^{NyEm(?tTvs!KdW{4ZI3V`t+ zb9;Al-7go6oC7a`#Hfz@qdvE|+!dXRtpJS|ZwLnm^<+;B;0VbZM@mmR{Z>B+Q-d>o z&tK<(Kg0{qB;hgcG&|SL7)1yIV0eFpC0ZJQ8)Gnb63NDD&PMc{0Z851*5DJ2)}_%h zUmgUPDS3l2C|c#eC9hVz^CiF!+yGA^T`)DExz;JD9?#bjpM)spv1|%AE*N9U<44VR z2di=RJbK+-lk#t+>WlqkXGsuFq|+=S5}^0usPV4o#w?B_l79p+-UWZ}nM9yOxeUC# z)syDm^ywJG1!R&dP;rf}Sx`}9hF_y&EV)n%tEr*%-jA3@4Db}U5ceGScUk!#5CLG=hFdiWeT!KIsp?*XH@=Uum29yZo_@@`IqRBNu}dD_{V?`G1_&gW&d3&87otnzsHtp!JAH zMnLQ@z$*S;%sTmZpInE6NcDIyF#v_;lg*h`_=pAX^!j{jCgmZ3DhZxVJi|KlpKb!c zJvIF4)z$AWKs7lJ$=zq(5f(pBAI*Hc)>z>RDe_nR)yuh@f~T0eto%#ZUqZFca-~wb zSC8Rs%LXHe`EQ4i-_5&K)HyN^>A)t)%yqYb@mrcSk8&7<8OK2dynNTpolTj)`lBjg zkx6ood{^;r1qB5a%H0Y~U_W;PjSv$f8i!^#^8+slrA2~K2>9Dd;$w$OfO(6zKcvdG zwV~x3{Q4cehMal%b_#CY5dA=gj0{n{b_XHotpbgD7X8;fM>#4Kl-^!M-`r*TwUDks zR~FY)KbIh2vNTheOjpl7F8<6yWULyE=wl&WpBGVL=8*hve{`H5Mig9-_etHVRJOnV zzz|=X;84b#f3TkK+d^d@3(gM_toRg`;Nk@`*8Ct3%raSsvw~3>=jMj$0N=e(>y_ zqxk5*B-|bW!|pnC(0A~a1vOtDthJRd`!jKX&Om^jea!Bx2U9qF)mqVcj;FzbQ1O#F zsK;%S)!8fWBVN&}Ge+9;Z!x#(R|=nyn{Sf08BRq~kgUh6VTztX-PPLH?Q0GzUxw1h z&Sqba1%o0ztzX;DPmI!Zghy}d$@R7FZseb~hKQC4&~!(a)Q}Wq9$O0I)F2B8Q>>sP zv#r>_!v5tbc@d(VU3dK=L=P*B^qPY(-FlHF95pEOKA0wez@~_pX~7XesN)D=e9k!g)x7{%j*_A z&(gN~SXl0aN&l(whkIHZoFuMyc!uzn$cXZc$jsb~R#@4=J~hEJ4`n+CQEHX00%%y7UKpd3{Dt;K>WsgASs@@q+J^6`tS@Wl_ae1we|Y3YGfHcLh$`+rIAzsloEUsJ;ghNk^ZF zPf6`7W(7}Pi9&eEr^MDKj?-oK^t@;NA-~_hli}2+_kPp7&DMS{7_i$pB-VJ zxuP`2!2a>dhI2QP{+VRdc$;?`S5BbEnQ!a<#t)0Q>*7l%D_=-&VJZgUR@4#Qh9mz` z!SqwIK)LB?_=mqwMnDsY8Sp^=5WyL-b|VN=7tef1|He3^li8$a@K!zUg<~D;(j1I@ ze!T8m><=%k-o>8B!WAF+rH@qnA3Zs6ULC7durTGE&MJ08C;Fc7@Nq@9C`r>;Q~92; zI0Lv|l>$S*mH4`tx7^z0$1*a%T>F8z@^fc&v;S*__`xgzb(U2|z`o}{4T6J(MW4u& z684rPhKD+5`Y^|-)2a(Vsa!ovf7=}Fq<be2P!}*GK{}nL{YMYho?; z?`4R|`K4Rdmpe}6K@sGShkf>FZ1$_@c?VJ+g2&`zoQTU?CqwaOgLY1JL-a+OjdXP zb!y2;EyYi;=F1@!4U+X9eOS{+^$)EvdJJ*9wScLczqor{YQk-&Ds+8)P4naa(&?KH z?Q@>->np9wxoQWj1w$~pt69!mfLRUov};j*O|V75*D_;uxW!rOV{{iGS4FiRY9aLu zuU9zO3pBN9wGTe&L}O&cFsg4I+a;M`Vn!&MC>H{5jVqgs3|n`H508j1SDaO}h`m6- zpo!kzs^!|-MziisEf(%&dK*h-<`$oJEXvEC?H6MtfAnNYu70p#|LY(Bev6FsYRe+P zAgjM5Fl#8cUsB(hO9*{dBN!TAJ(?dGJaQE8Q~QbwX2O8nd`ExG z=8wQn1OwK=h~k#&H}1zzbo|aoFEck+*a2!qx}&>Wn?hyBs-ADm^O(<{?r_Y^B4zza z#rnzVrlQ9F$PG8djNivJh=&qXY&fC@N|F+Q5K9VK#`9rfLtkcgxpP@l8eq*!ANNyh2DZ^DsW zr?Y@8WUZ8rEGV6@vj{4P-QU~q3-&(Raw=G3G9*BcR*gN|H@<(Lpv*zdWIv-kr$6D} z7!o|)HM}pUFiDn5m^UC!%z(2Av2&jn|1Q{RQ5ukLHCp)0|ELAP)J!l|&MgEIX*AbKIj3yhwIO%c)8-yh zulClTgwuFm2{cdIA0Gykg^gQPPi9fJSZ+&T84AOk`zuElkNOa1H%iPs?qOnI6Z>x9 zBE72D!dd0fk&dPz|onMgQLuDqVh=v`e3kd$b)!PMQqj z5PFZ$*(*2dm>X@jtZ;o#K~1hiudwsJkyH0S{JRWO`9F0SH)E}w)I)h@a@{#|?)#jI zNmx#Tj}3|B#Yx?K2G_;H|<@AXs+q3wI~%j3!g#b96R z^)LV5)KZz19t$y?za_M%^iCD2Z__!BhlW?~Zuk_Pi9}v1BVIguh#8+*mmD6(d?P%Z zV+Nh0B0)s>Q8)Dr{$pN2KxvR`vrf`{3>^1-r%=+GR2fz;b9=RH!#y@f*e4z}zpABc zrL`!P0sZ~+G~H7@tflNqqSidr+6eeWojtX6U>jZSYwDMCDB}$r4lB#V(4?NU`YdL* z<<-Nn%~dZQ78j3M?_h#}&7hutbnq8VmNsdE6D)|B>n5Z(QD$Z*>8CcE<8TGqR#pRI*_2fK%-!A6+Dk4? zS@UF5*DscH$Ia($(pdSP+6V=L0r@hI0M|L+yTe6$(;>du+Ka$o3D*K6u_4bSLV&I z`+BXY-a5|vM!bx=cKM8?{v?>t&KVhey1pFg*?UeJGp{XnPf)h0SEYBs%QA7lr=}aR zGLF-%t%>(oaah=qFLoY@`)zLyDC#`#u+ZBUCn^uxMB0fckmx`#;y@pHbiP5TW4?MO z*!#_O*1{rXc8ATX&HcD+>Qe)ZdUU1JJ5m14U%DKBZG+V)qBo<8i{|VILPUt5%3ED) za!6)hzVGtP+UOkC)(w|2V_)A_EG}Wpno;wEO-}nN|D}m0wBN5LMDnZ;O*p|U-)R8W z8lqd;!HCb?h$kKbBJENAs0@vDOuN_9ytVjsG3}HOQty83S)?hnE%nuSsB`D>_Y3Rd zoMaFXu^`*&TZGmR^?HVyfBBwv8M^#rM^4^i%<-NTu>O;fdihGbR5SmRL$gz z4RlA$2@W1X=rR4{U?nxQTCH=>HBO0Fo zCi(xEK<9JwM|l~Z9H4)f{r)6*YL6i_jNC7YU)oOPj{j7TD{J~cBHsb`kgJt$6AnG zS}F~NMDX)jq@lKU)^%0io3*unWJJ-!qc!enX_te8!y**eSrC4XooFWetb+2fqR^MYeXE2j@xs77)tt!v%w$hEq^hHUoY&1%ZI|y!;g_E-ub& zER|<<0wu|BK0BKyMvB$^LWj@(cp@u6TtcD+3DlfqQ&%^+NtWEO5e}k{!xL(%h0VmX z@}18X=|V+N+ya<2IgtZpetG%$qseH6r=!6oi56*OG?@C$iL91Z>JehI=ckTTC1b~{ zB)*5s<18tnBP?UycSFaQiHSHCD~*attQM06d8vguUH%2?b(SN_W>bfQgW@GxEowAM z#p7O};L~+h+NZuCm?B?v!!B7_5`UoV33>y$HJrG+bkF!l-6J`s5Q}8%Hg44g#I(uR zZxpGPL4bgjKns$f9M4w>oVMJiQb@+910C>O^RyR8iGm~@0(P&MN5_GJG8Wq%Nvpm= z3Su1?Ig;yg`v2(mxZIl(lc#LE6xMmBBM>SVJWli#Xv3_;>#wr@s1o5j(%GX^uXPgP z4Gsx0KtoMnE;~5#G;DnilGf5GI=4M2yDe9Cn@*5#G9TXP3NQm|u~zq0ZbZXFvWQAp zL*GS{$hMj#6^^K95ByZl?sEOb`eF0k-;*a$t?%exNd6Qrun0DO@kE#%uacRKIaSD3 z7^Ha%@bb|oWwK$9yGlU93Nu#(=bJXBulE2L(~ z_&`H*8D2R*9|j}E8l3mY8h1EQhL=GaZhT`q&)%Yxda@+^h+-_(-h66Bkdv%~X?DUj zLq{jb0S2uf#J^0KQq>g$b{g0(^65uQvU6nqm z?M?Ce-YAlJHlud6hxEzOce>_|x$*a-a{k&0oBioZ+YG&8f%%bg^>v0e(4dIzfF?^C zj<2N9CFZ2%_ajhpET!|D4Gq!f_bf6m!)<=H-t0#MM@CwU827qPS+fFT<>U_;cr>Bz zFx5LUX*TArxvc)N=8=P)!e>mrY39RhV}C&6<5b#V!}WxNRI^DXFNay8@WHFy(ygIb z8g`!N^K`(&m^IseW1L5seFVdJD=+2YD4~pO!h*y?`5E!b<20;2zD-T;3i}`~^9*5Y zZoo-u?vl}HjDKq0Awz?bL)dwGpq%?J@fwy@OMf8A!L1&i&Cp)`u zYd_r{VCmXUzm)X`lyb^wCmO~e?eBUf6rw#M&hp6c=9@9FPtZJe9i1LZq~R74w9t>= z61q!!E>$l5#4Jc_=uKaXGQerCDNIFcLl$N8F2p}ws*)Y97G*XZp2n*JXEoTo=iCg5 zFja4~fIk)@BJj?PsVP6v<6)w2JbRX4J><%}Wg^T)XD#KiEPScgZ)mk~>k_fN7!w_4 zxO!bjAKck1@_6L`bdPnLzFJlyfBaY$Z`UJfW;wU4*o32Z0S^lCRmlq?+qY?_3N80= zl{oBIs_X4gqosA++lyMU5Y+sV(9~>X=l~X_oKpFVSE< zORUvi?rvEOyZ3SCTWVIKZAw&)!~N$?R;3RnCd1k_|FciB^1Vig*;G;J%Kuc(4F^K)zO-MNrdfBCS&&L4hY zHz*74`)Vwr^0e-a zYULsD!ldwfXGnWUvG9;mDw-or4*UV{fsKWh!XOL?atOnv+9&gy5wh56NK|I$+S{H^ zdyZNy&+{$YgumRb?9su{)HWAkrY4t4jDCp;<-0&jCxef7xX`P%6R z0=7?Eem1J3HOX}#a*b)7a0;=oT>jaOVw%4rCKR1&n8DI|=>oShtYz`|*#LJHS|oBO$KUo}<|HZ)NrC)iWXVS8(!+ehuK zGS}gv^TjmYl8zyUnUWocMrBQA0i$Q<&{BN2a16HUUBMNnTe`+0iQWCGK7v)*1HOXu zw6j1EFcb2#f+)Ql6SL~Qo2W*ol>2FiozRC6le~lI7+l^(sUnNa3g~W9*($ci>28`* z`L;E_;!7}^d&eC*PQ!dho<447YGF^0pS{;w+0F>cWlMT~&YaJKR-(+7lZhr-EJr1W zEOuoLv4tK9&Zm!2U>(lEAYdOT0Z$+CFxqsaWp{Fq&Mv@By-wTRn_?A5O1S!lK+1V= zIc-jISL=c2`9!9uT5rkb`L0(&AO@*PLnr9jf*=d&Nm{mjro;k`qlG5Q9&P)ZeE`^V z-*T~0uGYrP$1yU()rLa>N|XDYf#sIIj3$I*(_}772Y)|?S<1d??H{d%;j0S-a$6JO ztp^8bz6SIvZC0z(d#p)Z>Lco(q~-Ip2;JQk3LH^f%3`dhmo87@cn~WM|5tl&6%f_; zy$=h5f+&p$NJxqbC@n~cq?ELDN)JfG5CaC?-7PUR62cHFCDIKuFbGHvFyzqiKloMj zck|x8cb~c3bIzGFd#}CrdY<*{wbL`aQuDRD1W=5g(*}92_zy+lZSBw3$iHdVIlj`j zL23R5SSl)WQ|!ks7(m!7HSLJUE8PONwzgtZQcx%3v|eX* zXX78_DbYK(j^G*gXDYpYduKxY?_y4*x5f-1Q#6#iJs#hH{p>@`PIQ%GO2;_ajb{Y{ zhRy9>_YZ+`7A^}(7Et@?rb>|F0=Z2p+ebPRDO|?+h2i^7B=y7kGI6x)YcGvsK79tt z_ojt9Au8if30aXVt3kwtoLU;7reOIHlcq(cd017K-aS3q>Xp3bXN1BLoV_i8)eG|x?^*DzPw zd9IkI?NEHXFEZ)X@g*x?D-V71gK`%cEns;c3daT;vQ?8Nb4J+vnCVKw!y8n0(S24S zB_=fvSnV=2UtTuoW2e3u;pEqpI7e&$Vx}?{ngk`e{|^ zlXV>ClG^BYrv9hcn-FU9f$wZ|!(?5efv{Jb9pS>v1dM+m3oR!AfM$NGCtkx&YvwU5 ziEB>GHf(6(p%ApZj7`Pfe=zriNqeH;I*E~&nXF9SvU#L$u2sjtDu%!rBUT?32!ic( zJsAblkOtiZ_Z_^ygdGHYA*k#{5a{bGjMW|>tjpNJCXP*-K_>qy(pSV{M9iLVG)Igp zDW&N!ieLohMzp)6l7|?3Zj&F%-{+ZFi3Go%UpLc~dVo`@lgZQJq1p0r)9TLWec2GZ z?@Q8-G|13(1Aa~ttRsAt%9zNfhDRSXLxT$hApz!TygEda8)D#X|14+;bi`O@Pa(Ii zIOG!c8u9B#y@-M9nok*6aBtDGPjFBT+$D_+U6ST!oWL$U9pG4b{DRHhLt2bhOoCbk zgHJ2GF>WT1;f}{Z9N=5zKqoWu;Eniqf`_82O(BEzeyMNbMyF)v)bumwneHx7N3Q4X zzCW#I2(XjuLebSfVEJP$;`Mm1ahUbN!LE5};;T5>k_lpUG6}Vn8vOnz=#9CV|0OvI^BpE#zu%yA9k8y+2~w)RR*Qv`3}ANN%QGz4o#Y$J8PClX zOfI1A@;NT;ZInU$tn<7xge1=#GnD6as*5t`mB|^%Y0QcZ zB9k?bj_iI3LR^cN{^KMj@qgA4D4O9^%713PURPIlP5w37gqv4Wf(ZvF&lSB2@s}BIoi_6GBv#|0TTcRVvRPqUjlHb2;Ge>qiq)XY_TF2u(6s^q7QFG>z z6IZP=wTu_WqC8uI50!#xehwA$<{o zvv^#_w*+5jy4}+Rfj|<$81e@xzRqaml;;DWGy^;;J>r%Y!vT?uqBLUal$OWRAi zse*FDmug3mIh_;Pma(=a_XT?ogcJ9L@99p<1a;k`^0t7#VoVUtO zjiG<#39OCzHseg}m{?BFYw_Oe+=a%e0?W@07=8exBfz_Os4?`bGYE<%_s&pYSDbh9 zYKd5c@VX!xlTp#~h|+JBq@c7EV+TXoS19tYinY(r&sWy=Rm;fOlFrg|?j?lm4Y1Pi zACza*!x0B?)bmw7R(=wPM~`~-3rKmU073^~kd~1tRbmqWgA}zo-r8mB_lcAkMrMZI zFoh&5AGvAqbItN$v$L1KLKC9vufr~*=@mD)*6mIKYCD48uiP~Afc!yipN+M36(Bwa z!K>u*)4@>x8#D`3bO!4|&K{VJFW*8owI6Pq*noR#&?ifx*Wn!^Ug987RpJuP_ZjdZI-X6CZwofl5Uf zqnAMLYlMBv7O7c485Em^?j&S*oT9{6((G{#z}|nmtw?IXjTH_M;n!w^kFLTu9OCNf zy;Be4`b+TN*4*(GIW#7EWlLQ$LK=6??*f!gBrY5{TL|R^^nQzF2>0-m~T_HcJz1s7|+g+^=#5&4rI~T7h)7p}1uPc>G;%eI7hD zUSmz4(xfX}jASJFXKr=I$$~Q{%%|GB7`jE84Acik-wg?yO6js_B zODE(#``OLjNnu4*ZgnP^a9*(%7xg_Au#f)GtK{O(1UQ2dnL18oPZXG%!PR#4%dBCZ z2X9Ap^>>v|j3x!cgdvs45^HaVcp#mu4Q*5X@Gs&Q@Q+) zThbM7&;#iLPK`Dde}?G;|6K=AtYl*u**2Xd`?k>2zN0rRT>?_F%yw)OV}mT>^1XZ5{e(I&n?jJ z7}JDid8nN_S}kw1Tv;YSAB(&78JHLt<_P!*mdo`3l`KZGJ^GfSgnhExcAc7z4%!Y+ zJge`0^y>FY`2L9XQPHkMRc5u-6aPA20IkyAU@P)F6 zB=0XDW&hCv@Vj)#42V=Y2&9&^tQDWWbqVSe2M&49ajT8BQ8+VD)cQezz03d*Q;%zv zhZ+uRN|SgL_aFQOkS>%UoZ2d!YE+p&{v-(|m!bucDbaJ7Eo)=K#&a&egdg~9 zBU;%oYksdWlV{!iDUrTQIvunO^^2sE&y{WCFVQ)S_TgDvJlsA0p%NNZzqwv!vm};p zeeA8+yi{6I$7VfqwacZZZb2N{e~I%YD0hYmo1NuF?&-oIZK2*}7(Kk)YlH}y3_nZ? zu=-K4V6~4G^X&4AH{$oMk*5_eu85B2P|{}wu@cllI?cT;Bq1Q(LyNNNXJzh^5Ff8M z!KXsHQvn8`@1r)bx`nxY^F@6P(8LSKyVud?CmzY7`Y?$Ydw21o9?*ze;ti=z%4WnsjC z=RVKkv$MY#-qTGh5d||BmfGHE5mbJk9&yTX^!f|=4N-_r)zd}&tj?IS{wgac z9b2Pi3)aMUA6^WhlS-39Ru6P`^Is|+*`GLkd~94dvvl?%E`{q2hXC%Faxyb$x)jTM zCYp_0zeSH}_i0J^>fBW2(`RhTV@`b{7Cv;N`yZ7@>T>$V zD8<|qQsC`h@fi9Yuy12ISkfLCHMJY=C2F-)i+St3O)!M&X2h4)oBQ{IcL`}lRtf4y zjwhWLWx$|iFOh?;lpPzVI|ud29xH64Pb!kiR@vem{VQI$LttA{;04u-k3t%WE=KU5P)k~B_ztZzN}m1-e- z(*u0`-bJYHH20FHU0jchsLO=%ZtL`SmxC&gWS%wGB=y!5)*hYG`=T1wy-dw2_I*X8 z`wq1>Jx?IV=VaXCQZ~1%!%E#O*vPB3tyMyf^cNdfQT`)$;ZOQr3@fFWW>~$y^N!Xa~M{NUjeA>F!b}s3-mon z{^Rz{kdxi9Mu&=#RL=(632sGhh{B13$ylu#BfjkG6YA}frJ;P~u_TN1LLg%NUc;B9 zR_u`84GtW6BYwaS8n5f??jAFKbwZ;IvNv`JZo%cZn_MzWMZk3qg>NBApX-tb#-dsx zy5bDI5(&{ROFmNL;1O7j6$-huzl5x9Ce-c;sZ*=2Hb1`os+|ZT+;VH)+RGU=%26eH z4M>dn-hoFeSR^ba{ml7@hHTy%sa#hi}VfCHTt%Y)%c zaf8CcJ$pn-V?hEHeFY(Y4U>7-jqdfwp%JU=XW?)#rv&=0)ymU9nD`ufM)_{Aihs@$ z_f&3n9A}oeNTsKp>l_M?)&I@@y8@htnHJ<@^*?Cb8494~{4F&gXLq5Nnqc{?UtU?% zJOL*pm)$vxkQ_sQR{U`956i(|=l3bXx15K(mYu*nNSrl1NMSPXfroHqQur_CZBoVM zofJa}5E)sG=(CTE|6<-4J{*R%=lcG>n%upp{~hm5yzrnO+q_8T6 zy3l58xx&;>=(jI+BiM4DjA$k36@9C|{Bgw`VdtAauPGh?urJPnk16urh%chMwQT0O z@|Gye&_f3@fDxNP7~=Ro5p5j_@U&xInx{eZ4>CQ*2Pv;DrTcT?cF}zu-&CT`GveP zpPv%D>r>A}z_H7i>OnYrPR}-7UU4m*UY&4~1_^;*@y#UwfRAk0dg%ZFd@wtOyFO~t zUmypT5GF7A*+(LFmD#L+%%_kd2Pot>ou$ndHhNj$I0D&VTwq;f?J_<&KC*=~!=x4#Fq= z6FqEn0N%Ot!#cG?g)f95atp|r#G=*!s!)0$^U!BtO057=iN-oUGI}5_`ElYQB zt3H5J9{-OKL~;TySuPwl&o7P& z&!kGaBOV<|b@EN~w(Ni5vFUJsM}P z#TTa51ZJ~|-&#S>*W5@--%bh74lqPpi23hj(p z=KD%7n?HrpYSO>LGfTc?dUpsMyC#=+X^tr=xz$?H7blnR&cel<1^NM)2eRVP(sG#! z#6QR~6_%uGu>8icL$?8qRF56-@~(Rj8ITAdrIAx3`qTgCRCFNDI{~bJ8=TK2#{nv8 zB>y%>`fkvjYg9i?87DiF_elQc(i4H+eB_ZBB#yv|PGV-}(L~g|`EWsgx?y{)OOR3d zt&*1GKeMwd{Yn~8gVbn^m=V+Ij5o1J;MV=ai7o?Nc=Wo6?2($pXV$A2i|Hosdk-Gi z%1Ru!G9}8kB8*_+%}x3p?HE*$z?H5GzO|6`GyBWJQKl-kH5}XQ$b^La^G!fu0>~E$ zocawot?@^|0jzWPC&`Ivr_I7<(oUK>)Za@SjA~@1aXUQ zynK-S7#lO3XSUXQgfH9db5iBBsHB+0EoIssI#9QmUPLDXW`0*=(MQK&(D0Jr=7Sg7 z+DW#w%nbNZm5w*@nVnKCNN7@$S%5kBV0nprN`W+zeC<~9ywc}3v3g8ZkwGKasz387 zl8>RR=@4oFUS^>ce9e$`qrw5$cAZD2B>1%Bwo|B90Eel>C1B_|+dWpPlS0G~&mBpA z8F%#ud^QGL5!fr}4MdzVwv4b>89avpGrP?cF8Edc))m6rOKHIxy1FTm*&?`ItPE2y zw>>&wdqTA9Pu48|3T|xnd%rYqmR*)NvD3Id?=KyTX5y-x(={pVh>W*aiDvyTVebM= z+Qw5`QWG+q6yDhQcrc(@Nv!Cqwy4}(Z9`!K15PT+)*^~Jr|H`3?i26P9~)M*Nt4oj-{EFEj^QnToyu7x`RNwU-M z@1uJvvyNdTs+|u7MX7ba@!;rC{)#S+MAJbc{PGt|*)P|khyy<+Dd}lgyJP9;P$JTt z)-s^@BnI=<=Z&56d__KTe38RD`8k9+?1_1%`w^2lvH4$LQ=o_+2ykLEHCtPb6NtB( z>gw)tfe=CBzMpvGW-YArEG#TYklxxZ4hD`5BfFit6p`rBpkloKKC~% zX2Zk7mZ;GZc$HO*lE|+54I2J#7?1M8>)hV>ajuWLjo@m{;+I)im#-86c|*mfGr!ZN z@h0mMF`*j1VPI7L=O=T^#3#pm$A?O6w>Eo)(UxD|;Uhs$*Vs00pS&JAz^Lurc4{>( zdpyVssFS=`)H1fBi9O9)m39JX_TsZ^M(H_9Wd1Jp;(#X%_Z?@>sjt`3t+Cw<_adjH zyiXdGh-e%?%c)%gDM&Va&8x23fwl<;U$HRLdSWj##!BB_+{^4f3f|wC(W$jda}$b( zSg;&2?dLh}`2^*Qt#T{;ap{+^H}R|3fqJQ?0n%aABdfDco@5-ZpJ(U7P1$2sN2rui z-i+t=8oV>m)XY0is>)-pB@9kjt1m7&qwG;89t ztLvq$XdC{M!@~PS7KkD*j)xNYFisD0$JXj+HkPjGm#uMJ*JV=14M^JhTJGUj*|3C- z>zCc1@8PjxXYSm0|61Bq)cZ6PJWBVu{+}`N_4MPX$8wm?tr>aIcp6cETG9_a<()D$T49czl`8>XI5oord%c zhM0emv(V4B7?t+qah@=GnErPK%xw^dvoS<@>+TGP5TX2O42Coa3`HF4)wx{uC+hkoF< z&o}~IyNc%zzvVL6H|>-=qY_+fgMZRjber}#9T*&)Z&aAcUpb&6b6F_o;d59>ss9qY z$|uGF<5E@3RN>&-s}Db$#2a!N%$Gh63Fiwk>gwWDy*>8vsR8(h-oE|8^f~ zT#<~h@gRxN5&V;58{FXG4rVG>Wr5~Bl7-F(VVtO`sy7uB_YS%(!}=S+Cp`kYUoPA5 z%^gfzO-LCIY>gNWK()=s4&#g!$7VFdjcPR;jR;A?P6Q5CRK?OPCn-}tY{~1m60s6I zO5h2~QZy&8upzIe{#Zfl%5t$_U-DC@_!f!Nx(dC*IW}%sre8fLvc0O=SZ5j>UQO^b zDTg+M(#o_iX82>Sx>i_1DXj?n0gu7`UeRYP3ru@9GSY@zk1H&o80~9SMUt1rOp`aY z4B`A%3H(W^Kg$U|yj&OA>F~#N=#=J*hI3kQO4q8bzRC&N0#r=DhmBzu7w&aUbH!e@ z>OIE1{FQ}I+p&*0Plmo#>29FqN#*p)a7a^L2a-czo<+#CSj6g^!d!Fa+}3m6)h;a= zLqieGxBIdp)+C3*%4}g3`Q?g(${E@v!7Ecb{3su%C+y%GvbKBezK;@$l~SmdS8TKM;|xHE`GYF`T^wKDN8pzc`t)b38m!zXXqBZTmPx zjCPZ=vfXQN(@LDrKB0g?Tv5~ABv2ZKXHV{whxWng<8uat_XpV1)47w-HBN|eNWW9dlI%M z*fkDwOpavkmGx+q`FIn`!Dn6UJ?aAQbR}v$p;);Bk2JUzZ?lJ#QD<` z-*B)X&75R4AKF0Q?l0%~uyFJ$9Z(e>_aIoj50hdhzUI46=^Ahl{*`5-}Z}2**DbbIC97 z*V5Ok^*g$C?tQ#i;D$y9C)yVg`lwFx@|Ka3lnXat)}O;%*9O17Cvce!VgtL;Z<7%p zGLcNxlp%B=RU(Ww7p`D}op=o7&Jm`_Ujstq0n%}6;4lno9`n#%kv+ZLr2!`4`P=rp z|2M^at~n8~UcBB7y)JT-oSawhY(`5QvQN5BKetS@SCV<PCG{qL;zu~BW)m2Y_1H-7VY>-%%xTgQ+;A3IzZneHQ5ke zD>gZ-q<-;?k2vsH-*Lq~H~%%l%0@D>7-7Hi+#C z|K2MBv`M_U`>(zWO8@|ec6vd8H1O}ecYwA#cgg>{5MYBD4FL58N+o~oh`v9>Wi5AcGKgU**pYB?@0T$*1bTiuK?(%RrtRk1{?3c z7!dEj5cml&^+Kod!$4E?!a&+Z0tCLly^zQauNOBX_5#n&j# z_7V4nap9f_DWUOxti0oN`}^ovgofzCxc{K5SWvOnG6Y%1sSoo{{%IRyorf%fnufsj zrH(Xg7M=Ty&e*mBMQ{=`F@@g}7*MhdQERIxGaq zH5FZ5eRt9Ho~FfAsUteDZI_LGETQqTjJ+I}W|f5LVm18})LWT7HGPMN23JMJWT5xE z<$d0FhNc)=!`+lDx8jfe$w)599)>s^!U?sWi9^4!Cg^f)AvD4R+)f2;5LKNv|7hxS zP^7n!+nlzwXr++eM#};Ls*>a;*A&cplO?z zLT3eh_on!C=4-u0q+FrfIiL{9*qDR_Mo_e)g6E2@=Ss@hrEg?^yQ7#y@F!ki)ih$i zVFYy<_0p5_Chl`=c$eP`@_5O4!bDn zqHmB>*osTnq`wXJRzf#s_UI9;QG-Ok|G4*TibH5MewyzA;$aJ9um{3zIF-jyAm%ui zfJ=A(G>deIusPhIwp-oDn{Q@~uo$sw)qA=W6}P0qDC`vSoHbm%FM|Vr*gnXoIZ(vUbdqs12sE{Z`T1Knmu1VLlB|7L#{z-EQ-u?f-RJX zjlGYkWj?M)e;&w`oITV~AFl~hFZ0B1s+e6jSOdv(4W+k$4XwhJN*+bk9}T$w7GeOS z^NrE(8ENF(x4lDHmm?v|?B*68HP>o**C(W<4OV)JQUq0w41BaTfC?1yn)mY?@}Y(X zrHwWTHfI`T&>vk~1tCdfO%1WIb&dJ;$+6F=AGhtlYuE7{3T+X&9Bq{h>MPrzr?rY^ zCoD8PC4cAyr@wVJ>L=mwfo5z+IdAyoYdFQ>?|qv$@9>6s3?7U3vBt%xWxbicT?YM7 zRPA;!B=pI#lKrS+tNTlOJbbGEhi1m@LU@cP`(Ei)^(8~1rjs*uuQ4y$TQ1RKm{d?1 zw5uec==I`D(}QdbgwGneM$bn$~Gv;f$O*->j;c5vmpSkyQlo#ZsI0pZAv~R&u4E&=@iS_zE z)RC@EgXLMc>Rz3_2lv&hskz@CFIY{;L8(Objv}hGh!YA{bZf1qH%whJ7iWZi=pSv= zZ*}`P?{9J3@$As-CUh;S74Ow?O2}OyU88@jdUV9gN?e`8X4&_SgoBmAb^bPO$@fAo zaM#a>MlILcy511#lQ`I6pTWfGdo_*SWvpN?$105ImT!_rM)2smohj_H-(_VR&ia7{ zu!a<*MkXlt&Ggy#D%3rVG|${Up$(0tRb1($K4 z-iG!_(lM7Kd{N*_$1p~%OHOc-%ve$VutHr=Zc0Ge0>tZp3E$% zRroO9NKtJ}m;Mn~K!KfX6>oiued*H;gDVLUz4nK~uZ5Hb@-;TM`qZsC-*I^?a5|N2 z^+3IL5YWfmugP8zbK*F6Ht*dm3 z*Rw-f5q4rG-{zt$irQC?D3xAja#Ai7x^H=nB-vP4U!HZ5*}>NyV3t1^FnfSrQSl>- z^ItNm(0>d@6x65t)m+U7+% z)3ae6P9Xq4dq$4`Ql_gx<9rwI@0Bj{6?Om}7XGDS+Q)jHXGd0Lxm}(M$jVdoIk86> z&@!Jvc~R^5(xF~jdG$vFKC?*MYY(O$b_k~d$Nd#_plbupB1z5x^Ck( zH>sIUQMgiXWu6362Tw6OJ%l(z%bI_{A>6c(@!Mp$dpu;qovEn9oG1yY~m=(dnahzx%g_5 zE&i_W+6=E{v7^tv+s1Y4mo}`y;?yeirMMcF9!XwFiTK>pDK?<|HAC|Y=9-fh(?_S~ zMN@m9UZnm?rB7YGPuJ>l%8-rY{Z+!PtS-d6XRvN1%+^?3vsGg~lIMBbP*3*h(@1MI z{ymC$`?68LO66fl^t3x7w;`^t2(fLm5>f1~(Xp?Q>#at~??Vp=SiuKlb>s?1^!CDz zwap)*3m59ioPyPRGSe3x6;C~aS{aXinV}pn(O5s$QnZY@j!Wq7K4v{>9e%s9LhkVh zLgV;j=fc;+J5VaqaOdkmrCJZIgM+8xCJ)^1pOpwG=oZl|%tH>$T|7-29c%4XW};cX z^WUmTxt4KO0S;~Kt7=DY zyeu&XWShUUbK-gDZpsoxO`&kBX#H)tR$1lKg{5|Tbzz$JwHaZ3SN2(#Z z<>oYSOzdQQOzfg>&zg?3bhI!1Y{rIIx%uOEJ%7(|- zCf^+uLf^7VkH^l9O@BQucYzz+1l3NwCA623g&{O$B-^Ifie_cj`;oM@9x~6eQ7QH} z>9z8XxwuA3%QAjUbdDdmRbCsN(N4bKO;bX%xUkM&JO2GX_xeJ9gt!#_3(f0s_o_|+niCp?F=X>{^k|X@ql(oYXNFL`%gL!sK5otc{}a0 zRQ}u#JjpEYa~5Tm#e!?4#y_nLk=Q^S&fbsDi**rMUh=ag*+0XIOo2~Tjpx^10zPt5 LN|L1#MsNNf)4d!n literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_4.png b/html/html/ug_layout_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b3972d08a4c93ca604042fb9e64d01d17560d839 GIT binary patch literal 47994 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

^l8k__ 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 WMy)uKzD$Dv|70W-#cM>3ga03~$qYCE literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_5.png b/html/html/ug_layout_5.png new file mode 100644 index 0000000000000000000000000000000000000000..236eb2cbff7524f930fefcb00d2e86a9c7b487e7 GIT binary patch literal 68293 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 DT}}uN literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_6.png b/html/html/ug_layout_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8243bb799c0f6f097fe2a941f1903cbf3e198e GIT binary patch literal 105765 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 FzW|C;`5gcN literal 0 HcmV?d00001 diff --git a/html/html/ug_layout_7.png b/html/html/ug_layout_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3183e948c77aae95b4134ee67bc31d0a9a64365e GIT binary patch literal 60220 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≠6B7uGB#l+ z&@|3{e2fMnxfZn|bGL1GR5qKqf*t#ZNG`d$D6(;+uqN_1BS#T-l@s?FqVPCU)G7;z z7LIq$QQpSD>wgr!ru<{h5=Qfb#|GtKdddqe?}i)9W3#jHO+Xsf8x-ot!GVpdi4)0uiBfzJ{J{Nf$PgRfo zE?HeVk8mm(LSj-i=t*e?D+=xa&cZn%%hjzNYoNg}j&G4-U&1@S8A?N8k2KecT;3S5 z5M>_OX7}JQ_x7d6DBum@pPpYG%Hh-rrxhx?pqUI-z=SG;`MWXIlK!T0LWYO*G%$tCJ z9dRCw^ofw|VC^cAM0$yR@a$LOG=m^j$@|^YQi7B#9&sJt=yEs8sW|0^5drz@Wwwjz zr5~5z&#utDT@RRsc+rR-PgVDG73DE@5CxV`f=8v<9aR4&z-!3%7ECf4pW|&R+;4GX zX1S}pVcV{qQZfbgfT}LMj%wG{Oo4z+bGP zZ&y773U7`1ya_MSoS*g8)FPtTcz$&`BYa8|2+y+;PdcM7*ZcerViYQ!!`%YsTfe6T zpMHxP*F;YVjbyk%r^<435M~jaxB&hOp}&B@3iSP~UR^7Z7<)a}-VoIAk{tf`^t%&v(GgEtaV1Jcg{dhN-c zO1Pg4`F;@AuMBa6)dR*%OhZUv9sYRgg0UZ7w|Z%){Fsvp1fj{8Z;16@4tD3ER(Us! zI!UmJ-d-JsVEfe`>h0b>aX|t}gCsl}+q-YfY$611XKm{LKd~1*tXVQL%6oWH&)<>h zW?@3C-*v`VfLBO|J@J_+zP4&+_Q?aJ_%+Pa>dCVG&ix| z2q-mei$wV^tnI!+esXrJz;I^m#4LT$;oQ%hD;mNJ5V{>QkuWo>4f3l^5}Lgx8EuE| z*$ZXaYQq0=9MGVuU`T?GTg)<#X`H^UqdVV2%3<+*6jVKyxIz=7<1)ycV)*e7*j-1c zaQ3vKo@q6;zS0)|EUBaE9X_J9-mjNmjt&GAx@a}qu0vT$nsyzNMJ`BeZ&NQdXRCuv zh>DR{zDw;~uQcML$GIc4mU30?0b4QKiBW9TGfig~afomtDvUoQ+^?j6PG3}Cmz>R? z8tTHC2c-cm1yfSbnacHy3F#w6kkBrR zxqN@o&m>$}9=Rr0xt=>==Cij5J$vGA>7WS3FX>{h z?{(jp{vsp4D-St{DA)p?x6qb|aO#-x^lFLBjn_QYsFi~?sD&fN6^zqm&9&>h)K(^& zMkd=9&N4Z;XU{DoyU_*;OLg|QgI9TI8C(nu2uDXpz=#rF_q_y3bwGzMWxSM6>1@H# z7u0`3fJ>ni9wm!YGfnCTJZHIO=J>u*$Z&bBubwZTl=MAK?y{c3oOgZ5BcO4rtACY=`#Ao`12SbB2VfNO8N3YPK zWn>~daK3_Ur09X?bi61)r_<9Vk&g!B4=Mf6`#l=a1ygmha$TwFO*IPZ*+@XA62OAC zda_FhoQ_L^$47HHp?YRX1FskdL!g*OXRG~U#_?n4PvPM|X6(5DKTMQPzRw#;1Oa$P z&pvjlW0)BLr{UCC+cQS`A$^t-b6G+Cpw)NZ)y$Tv`bPdrHrl7nm|^h`FsS~e#Q(f@ ze5dNsj%vi>^NpP^8CT1gfumvuqSW8Apt!CKEkiK`pjF=@ zv-=9LAWFviU(=n#P>&Znr)(Ukm^uLPiai|5I*PrEj>;U0zCq?&MqMKeYpWIF;1%w8 zX2Tusp7)u)prrrp!cG`kEz_Tmps4vq|Ms^l_gWm{Ih`nF2eywM)M-f6w85r=uboY0 z>H%_RmNn8X(OzivfDiF@L&f3fuzk#OU3TqP~#> z{=u4!eUq2E+S}=k6}yV-i;5&0q^(iwDn>jyB8rz!vNS&#k-RYFdK<9ZR7)r`i(S(i zC@$DBT;`v1^rXf{Ou^_WWg+Rl&Y6o$Rsk0cAmXyD|oAR zMl@Wr-;On%r8z?JO6^KmDrOS(h!(>DK1seJ_nj z_2CO@UJPl((tmlme@k)~>96l~)Ne^b(J6lyWn<|;kyy1u8*AWgaEHqkk$FwPGU*2} zi{eRKALH8Rhz_fB*)o*#JY_+f#*CK4Ox{76jf2czSC|d9fxbzM%H=hlYs>syFGp-2 zhfHSxoBlfCNC7wuB-CF7FQ?N<{3Or3S36v#eJYs?v%nH7w8{^8@~0OdXvp)K zI+CM_xXE@)Jyn3EJ}3pC@y3Yni)4NvZen>Cl1TNQxZJ&m@ee=sFCkj=p;IiFP1x?I zGuKlTi4It0Ue&edJb8fX-9oWO^$MEH+|ilWfTfD4r0KV8F!WT)edGQLDCWarD~6&P z{k|0}B4J^B=Dwg$mxr?H4A*Jr1*j5kXM41aMih;St0;1+j()r^0D7u&&XKaSTyKMz zs*F&YRcfPEQg1&cyW`yvOA9ysAI7)UIZ{I3p7Ak-cuV>OZ(^$ka{NU!JrXv$3%mF) zceK6hwkfDq4dK%|u&JaqlXw(Q*)Fekvh$j4Bd!%S;sVuUw!AyNXwKqOP`FI(C$jHm zebrnHsxrjSu!9>VtxnF&6f4lt?+Fef%-)|_QU8(0{86O2A$Y<$>oLoqVNy}^iE?R& zr%qzOZD=0;-AsGVvqbx9YBB$yGsfb}AoI}tzHK+faCCon;<7O1CqH;O6M%mO4 z8LcuA4u&VK!SKCzTC>+?1&g2c*SuYNRv0Ma6_QghiAC;S7!StLm=jHdiC4$u?CyRO zDCX*u`Vx5MR3li+&}nv z+Nhs@X#GE+#l;3KY`+yGQ*!uyU-SE_)T2T|UZC*iSroKzuVH2E-9D{-d>Le3i7*<- z5YDMi*%2}|SdZhedvW{fYJzUVADP%~GBmpo-Za?2QCJCKQ)zA`s^hi7JF^hNsU9L= zej>j*-f)+DhPdJ@XLHkMl2{ZqC+r}pr*mCJH&Hin8&I8WYLRsPJ8oMwu32aL-@aA0M9_|5?pNFcc1sr;&73H*d`NL@0i(o_Rd=Do#>uTI8 zbUUICc-C&JKj#;g{AXP0aS`_Cz_R)MUxuJsOk?@Ml_(BeD~<*0GYeycA?+9r0xP}+ z_li5so7#J0gkRdULXy1Nms~pJ`vT4<{%@<^}7U6S+XI|eK&1*6QF~$m3 z%Q#&;$n-6AdevGjGM=u~!sWLyvrSH9CFYxGXDyAl_SrL|F2*0#4U=+bmEU9-Z{g!} zdtp*3WK1=EoQw~pEHHN2qeA^6V)dVdDbA;s5Zhddu24-+fqjU1jraa&V9zLY3Tkekvshve+v3d} z>MDtn*bMAuDgQrah!0xWnlK5%UGZ0l>73lQbg6JIA1#fcG3X|0DwVf8sHvmdOgR_K zn!<3~aEu(zlRb~Lj}YCNN|R?(y*w3&Ryv%Ly7kTpx;O7>YhWsspYAdljp!TV8Rg*o z{Ee?lhwE-WSr6cqN{P+E0mIfb-Y?ni7hJ)WG__>`3u!qUG(SP`Mf*)u^ z&JQNzMzbj;yu5s{oak9>J+fH*M4_wIJA!aEh;xIp`^?KdZasT Nj4nt-K2O)V$ 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 literal 0 HcmV?d00001 diff --git a/html/html/ug_save_1.png b/html/html/ug_save_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ed38f5bfe0b7804edba2b676293facbf8e77c29b GIT binary patch literal 23399 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%0DGT93F7}H(&9Bv$`V!x?A_q{0mL(u)CO~L%r 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
    nYe$)HvFo3(qHh>HQMMZHDVe;;h+-VNLZAS=3 zq0@E@q|a_UCIoun@Gr@)%Ev;*^={`I2E1x@@T&ckp6^{XqGYZns1r+0)!$zugqUq-MdvDfj=a4JT&-^_lsB0i(37*T%%)h0Nry)OS(Q@D()s6X21I z#q14y+l~S7>|s-&C4+$W@CH|;@=iuo^kbBf)z5V(RvNec^xq8JBYa literal 0 HcmV?d00001 diff --git a/html/html/walk2.png b/html/html/walk2.png new file mode 100644 index 0000000000000000000000000000000000000000..a46aea3e534fe62635d1455eeb3811ded19c3838 GIT binary patch literal 20602 zcmeFYWn5HU8#f9_DJ{~iqI62vASvCQ(v85-DW%fg-O}A5NDkc{!capuGsHXIkGIeH zcFvdg(|JCy`OV&Yt#z$y{ja|ES0x20tY@Up5D*ZsK1hqJARr)_A|N1YprgX?^vec> zA|MbcS&4}$eGn6)R&sJMx3V=uKyXK#(Kgdk*KN$Sxek$cb8|~_36w5Ew`~!4jVy|c zLQs&erXr&Zc#ruWR|zj#=_yLg^T=%U+-d#YQ|~pO4zI@*5jUZ+RLF`+IN$cN%`oXP zlD|~~G5JAMHZnCeo8a_&!?3B*)c||}#43M;6Tpl0FZRYiQq9e!emr{GMLgM6;(O`3 z3-RNEWf7JHY~#kCOv^zQzA|8=6%_s)r56q{g*Xm5Cl%s*-l8a5ii<>1>(L;QD_jy8Qa%cNa>dhYE zE<2j70QM6!N@}E_ZZm4!CsG02E4rN<2xyZpe5dEiYu1kg|~Z#b`RCO7uTgc zvGuW_*j7Ji&@ZVEd0R?4bn5Y>GEW_Ica?_$n6zOk;#RrS$_!NsPj>^Nsw^r+d;~A3 z#@9(wh+dT2ZerQsJhnopn5%Bh4$sGqA9oQ?Jen74phaj1L0;)WJBSF2qCX~bgbh|V z(o;`{FLA-|FkSG8!10Okv4U!koz2*DWosELRX6p7q8EXWv3v%|00oN7ov}w+3>LI( z1wsVZ4Zp!4hV_ysOSAMX5W?lTD+jz$;% zJdyw|vM~+E7u1iRd8vh^kz+$%&~Ql;@jufBTt#DSp`g6SQzCakl?mm@K`KW69b>8hk-=-k z9r>d0)A=XyN7U-i^WsRa>0>DegI|a-ysVEYlt#;c%khFFN=|J1rECmvfZLSS37IcY zPvQY!tn`jfA)Z)J0ZVC?jzGVNA1LGnxDMdbE11&8|%-P36sTO~;Ok=g}v0XYOaF=PsvZ=T0Z7 zCw-^0X9_19w=ZtnZY$0%&wO@>)*Hc!V22IE=WsB*_<~nVko^2Lz8VoG9uomMK{q=6 zv)iZo_@vJz(LqnWFo>Sve4`fMlJFL<_=*{pE0G}nL_$`=FbwbKyWW?**1hJvd%aQL z-hOTT;+MFd;27QXa)Pm%mHzD>t2PTCy#%w_>x9=cZ!Xn!v=-%Clswf!3}|#~EhdHs223#voK7{6yHE_%3lYkt_Y3Yw?iubiJD@G6oyEcH1BC^lMvI2)Y6l=(9q}%^%nMd{3GUpq<)xc^+q`)i zfd5wULV#W1RzS$9(D4mFPfNDGt-iIM>(|1cD!&R#b8KQDEolu)>Wu_$Sl71KW;p6m za#0eB>SJo<4aLzV(<722)WVp;mm_Pw zS_^&va-3|1S#Io}PlU01vJ+GnYcHf z;rab@wAj~i9B~~P)k0H=!-?Mf9!F&l3yUw#;>Y9XN*GFbMsr4Q)4eR6f|pI>8Ft5KO!>4^fK&BSf)@!WD{drQTq_9N7# zhzl~2FrRO0@w-XylFpL06OD&nf(VD~hP)VGFn)L7Sd;5))+Ev5Q#Dhb(Jxoh*YDAZ zQw}SRDAw-)yW8wGj2_PNSGU9pT)0ghe{RKd6Pan9j^ZKaap7X%o?Y2&)tnZeil4>g zlH#dsbZ;E4TWrK$<7ru&DV&_W0Nja!#VSIBqjo9H1mAe1-`!*j75db^YBH&xDs`>^ zHQSthU5T5pKR-$m>J#!&yv!8dn>nyMRz38ZuUz(fO!-xtxN|m^W;oDpNg7RN=}G@s z9X3lI9kCcn#cI`=RviU+j$8-+8(d9isyEfUo1Ejvsr|*H?wYe7` zQGZoG2gXiK#&hV@{BWW@3w#EX=^mP8cq(PBCN=GAS!H8w?O~lYRWj}KoyP(JQ#)cS zVkFWt?I#t8y`0^KhpJwyX1TtwYNH{ccB-+_?L>s~IQdiV^j@ZO7U=b9E!ma=gl5;{ zCun%7=k4Nku3?Fvb60Jbo2a4Kcuu(S%Z=}N{V(-%KP$WuH~cafRsN;b>pNEmXU_2j z;Fsg%Zc6o5b!{GfPsx)V=%`!aiehD_l1KIKBsiQisi)H2e9?T*3g>O)ptQ$dFsAN$XLo=$?Skohte1-Rs?nT49&F5^?J0!%I_hwyN3-ezXa&r z?)RBVUyv>w(Ht{#wcB>gsf>F+pP=rF4=$=lM&y!q8Qy*Jdyzw{O_6ZgzVoes|7tm*lsv5BTnr~b;2 zRAlY&x_X!$1}}WU!FEoi3f{Kbz9!NjDoP4T%<{E1^k{3a&aAW zI8U`9;^U@pka}cw5Jtsz|4oF9_sOUCjd(g=@bZbCg)#&yb}uEXl<{GIwfTY8^>&hP zQsuLNca0uRW!{(k>B5&qsreQ8U$bZOObT>!94rRRFN`OR%s(1f?3pkdhnY40!rlDo zIOQwheEp?P z#l{se8SG)F7ZcC%$4t8WXXVmH6jC5sxJ-Ra4qCTbAg$vi!P=2}=f)&g1Z>tQLpMyp zoFnnQiyzH{vfKmi?hS+EPoq=4vJ+`TUcEad4%LR~o%;T^)avUx;{ZoHX`N!l zWYH!7@|%ysH3Hx7wo)wTh$FNj=i8e;xT_C-Ko|01Qs#Xc_s(nE*y(6t{Y8&j=JblQ z$&N!&LB4=~bf>iMr&AR#$yIPPqhv~33QXIfhRm76>Ar$=>vSjYZ0A`E2IDuC%3FP& zRvN=$jn6FFj2UzgW`~L<56;T7_v$J@IeBrr-SY7zJm4ocmE-McO)eMi4u|(#vJFl3 zt4$)0fTInt)Y4%91(`nmO0JM|dn0rzGmBK3go!GX7)&MdNXVCRt^nNLSw0Vjg7;^j z^{bUOx)&mHu9cL1k35YoO>d315Su(v5Lz`5%D51l0BBP(RVb>$2!ex5TR{CV{N3$`m%hT_Hs5z|Y z{6WvVNj?#NB4fw4aLJVxFnw0@)WC0dLyj3+9p_l=z*6^u-~t1aaw`ZtN zVZ;5CXcL;d;3~FZ#2PL8+me^T(ot~@xVukdf*MV~n}WBH&*;who?(1@8-EsGuePif zJbf{({cif5cHKo?u*N;G$KmshA5v6juL&A(}&(}~H)Q6A)NmZ#7xq~Qu&J3QU zDqb@_%MlxV3s|4Q51PlDA5R^M*oi1UmZmj%6}+v~435e^rts_a&!mQ|gU5p$`@R&? zmBy`^RP^p;Kx38CEkB_qEyp}}Qvlx?c+T}+U@kEtrHIsqIy-<12yO^c3^iE@>CEWf zE{m%NkUCc1UzPbJg?R`ZrBPni)s}h%!8)TclT~TPjv7Ufl2o`uAav%D>uWb3wUKxwywX3im%n zjpLs}+g2lFPy94HWt(e@?>HRgSmvzZ$mcZWjB~E{i)$lq-K#h2?K%_P>n8eX=JZ#; zn7_a2qrOu2md-WckYZ3+6zhAhA*-NZAReF@qxw}fMM`4#OZfMY)RdN1$ujdujl8Sk z(FV$*j%v~H4d%Rsyx}+8C(YXte67JrU?H3Mi1I@_ukb*~=_tOSLdmF&xYu0KkrQQt z0n=(qN4{?fVsY1&k*%~RG0@%kwV#?voyM?q`cBD8P?>m4e$ikBJ$3y}o8)3B27OWx zCu*g*X|=h?;3X(;#7}M4BjT5*4SRKbepz*Q^>ck-YhR)3qiZikT1cQE{1p|{>_(bg8HcRXMYxSO7MPZe#sqjB{dyQR zBf#W=QZ#rxm@h-}r=hfQK28nlEy*_Src%2le;ry2ide{LSDnd1)#*GAubAGeOpL4# zpJ_f&FVIBL3Q_0BPIT4ke7z%(V58+SV@wd>!UD3&BOT%`3bn96T~GxiY5If;KW%#^ zGL{+JULEM19Q6!Ij7F?K44y~0WjJI!mUbnsXR>JoX~av(X)FV}wa@a^8e9U0zZ?__ zhJ9}M=&#b@R5{e}{Yz>XR6T-*`Ex^zLh6yfaD70#amvJ^GBA#@pKy43_?)?+oV;ww z4&~5^e7xU;yptd0M>U4qinHRm>FM`t_AC7}MT~e%PqJ9jLgEfmZQn`y5H8pK=?LT~ z@rnHMtzq>6?Ke_&3%K|WsX$k23|KRx>z@=#8lv3cc7+t z=`xt~wVe?VFz|o>AtI!v6C)r{ zBYY4SRdYu?TzMK#q3N@8`Uvrv=#Xs)W*!{C=`##OAzGX(mt@HM= z6t>o(|J^ff74qHpvfNpwex>Dlw#Y#9vBjXhNTpei5EU60fPnb>5^#XbUt^P+i1+6= zBC?!6pbzq&hwwKBw6aUJ50hMqt1EOsGg=hAe+L#~Okc<)2}9LYo2}a!xpWlYBgj6} z`2hKT`SlQ;+8+T4egROT#CFex10zuDT9C98a0x>y9ajOR%sY4)!Zd$gVMj3!Vxlds zBe%!cDadrxaHb9mX2;R`plWDQ#Fie#+TXa~`j=j6*#I`R;Pcrc$AxVlK06&}x>6{n zHkN3au0WkyKP80#ur3>H%$N>sv(H?$Kgaw_NG7tNk#^SP=cIC~xznmhFBidF6K^`N z$nUO=Wgn@}WeTmM(3o`_*czaPY4)C%x@*wcHORq%pf1@#)OCp2zx>M1Kz{csB0MVU z5th_(Q6S>=2wQusqFln@*P+AcNvCkCvrYM~LRWf|XofrR%XqkhrDwLh>9mh*to3Tq z=F!*1#bq_-m6YknkKLpee_6h$k)4+(*3#Nq01x|iXLTKX=Fo&s0{mtI@4rS8b}?ak zu+>_N8syK*ccOrV8O`wUiu-r(L0! z#WZaZ5I6 zs1y*L)%Oi9)ARa_iHRw#s2DY0-c?6acHUb)Hu&JMOfRG;^6K8ib@}BheF`V{l@B#1 z-*`Z|^_9h~qvZlwajlP=khA3<kAfH30yX_;u{Qiw+*=40mD&08kWWm8tj%#4;Skv+8j*2!NK}Mw5ukXvdHY!qhlV0 zEAfympAgetpG?4Tpq4f9)O~AzUtd|w^pA&0VaIiU!B2A{gNhvw%-T(k9psJH^-O}k z^3(PAOAR2!2HOOAo@Kh$il+D622f58zX$I<2&7bJr@{{!g6VtD&F8zop1yeIJR zb2q7X;L5`6vB3h|6+xA_Q`x4I_&7|!HRo~Mvlc7h=N&q1*apx@Z&T4=(WWrJAyungt*kN^EaA1NUEe3p`b#3IfKyD-;Ykc5$JZf-fOs+HcPp4GbU^sT8;X zqsV7+LLv@s15DAuVuJAt4L=$Cl{FRG=XDS;&~VIMK|@lC0V}E*=%BG=5%-g9LE!aD z%`u~4+~s|s6EqfFvoR@ay61PRO%I_cZ#Qh$&x9^EZdC`qs!<0C&S=L*BzJ|y_&3d_#X&Ry|5A9xl z3qX~B7y0ulkuQYII529g5t*oAomuDc>BwE?TVcu_Vv%EQ;88K>a(5; zA|a?VGQMulihXR}dv`l<{NUnb#1Junvj%LxJ9Y4uJo4M22VNW5!WzLmzUQh=AR(NA z+xxF`>M8S3tXq*s&)Bx>R8>et)^CQ6KKuD3#gLjQUOVy33}$j&tf)sxFi=P=7}Q&2 zOkL|!idxgYl$CUE*ea{Q>^8K}+Ghq_Lri(3N-J>g4Ri%37DU05ZW&@VE_2CuFr%W7 z+E&x!y~;@eD~zHRrwh}^tHYX`%(20JEHv;>RUFylZ(Ng{4f>}2d7cBbd;B%}gcba+ z--1Ni0!Gx9Aupje}iI`+}Rj))ovqi8jI z=%&=JsnFz4m>$Y>S|%ZY2)68$i5eZDYYo(Nj#2vEee&2JEHeG^86`KXxFJ+CFL1uz zCQ0yonA2%H#bW5YdTFkaxv?$xlZ7A5I0O1=USJCr0WW^<2rQA;x*b(o*pCfY5>yfM zu4_EtoZB5x+L#XeSHnpuT!krZpSqlw4h0v?eZ#^XX$zOKskyo0qsSN{)2Y$hnw&OG zN)M~RFTz(RyO|PBi>Fuis85j4>ze&hIL6dnKb^1-t0=IY|H3=iMfo*V70VXBK*3>C zSF~8f==RuoJaqPI^K4Nc8f<3rilfS^$TwmUNBpXt7^S8{iW`*s)(z4)6!~GyF{!P| zQ_nW5p3IQs74r@<;Uhr?)RfTuy;cIpJwznPHImD$obZB?nfmuN25#Dn44b`Oif`yx4qG5TNPwMy5o`-p6Sw8;Rl)34N^0oNuyM2pX zb8%ssN?818$GO9nK<5zfDhS3fS1A$t+mx5g9xp2pV=~z{XE~7=b!FVBUjMMS4;MSFn3qlxS)jF+Ijjl-~~H^ zM<;!ui>h?TeZf85YPlAou{ec$7tIny)>sOW*)Th8exlvL8zGDW=WJPiD75~-K4tz= zx|jdj{Y z6lxr3eK?f6ojf*teSW}Ef5>vXE^r)+A$*V5Z0%Dye0pAGETj%N6#j_w^&JLJz>(DToMz=bFJ5oUtO0Q-+C}V~wB;gOd=- zB)^-1%dHvmv zDy;M4eK^BGvSVF$8#w4T+T1d9U>)va?B3{7J0kJYG9KfxJMS4i+HSZTuoHc~Znh925y!CAv~?^Jk`1Am>sM%{|E!TS$V0*Bh=d{~e`NcPqX(^n7B=*=UTARmJ zYYqsSA2(Pyn-NKL^8;qwokjSu9Isvx+}=m|DIK-!vNYRYmV!I8Sk5NoD`VE$H}q>h z?S0~46Q+TMQYLJ`6vOxRoMsEo&YhCHPxrHu)|zkJ_jIaX>r{$NE^Z7qYJy0S)^d#x z)Z|GKTvk1g&(P8JRCw zok3{d#C>CtT(Tv_;zUXjGTkOCENrmNQ{Pfu>OYPJYPN#crsiJxK<|<I6&VCYyUIg49Jwy&U&|YB4>~y0{)@zB-)B~RAcZReZ9BL$K z@3K`qmQNS^LRF8QfC>Bs&RHzi5gKLARTcnL7@BF$>`LBPBIZ0%JJ1CL2&J&s4!N)c z8Mh0#T7J}vbcqC68fu4l^)bwnTn78$T0RK?gOa2i)Q?u%b(x~|T_z+Z-sWs3VZxr2 zFLKdr5jValbnCUt`jkO22Oz-W&(Pz^C(5kd^7DT10|hg-6u9(pIj#10zCsI;GA%Qy zPY2#Y3hGLjY({zYXCb*fvE3xkGe8FPMGLLLAf5q6!)Di-{ZnI~204pMi-n=b z8<^n)#-bu9xQJ;w>$JwU>FzoGic6y)w@XQS?WVxlCuV3ERg1!?ph6{Qf4j2q2@mUF zd#CH8>0{YcwegI{ae}U|XJC5EulKiM_>lv#yX8|_G=zA7YzmY+>=YDM3>;U{^MkGP zseZc@*~jRNjxY1rR)OlzBMFDRF95UZhuGS4^bk{*bMBY~kT{{WyH1<5X^e1{!#VeE z5hJ+w9xAsW3+?!U$afLy#JhgqkNZb6;tYgUCO00zXtn6oOVd7hEizU z1zdSZu-bcSdOLXp3XAN+AaMi}N|BL3s1AR#%HyG4z34%08n~MFOeU?`X-YRm6d{0{ zuu9G>&xa~Gm}5-N^(p%K^aK$$b2Q;VH${&}<#KFfgnAZD9H&BD#@KN*5OleDCd(Dh zY*403aoNlY6VKnJVE3`Kahh)AbZc*t%G%(ygZ?VABj+O5@rXPigT|CiIG_-D=}vYh zqtfp+^i1#zz$=RjMdwh*hliY})joHhJ=KC+er-t<4RjvgR$S~Yy$%#=C++hz6`k|H z0P3uB6|=M#lS+hkl;{4ioulFNQU>$qQQV>h@X_I-a=<=Xv@$k0fn}Q4KVz7J5}BR) zDclB#I!=OjrxG@Z1|)wBsj6f3>(Bag@qTx>hfuJ$evH7T_;PjTY1?YsX!I_J=7V1u z(3&<;cVOalfCiQ_&6pL!-I8nM;x#uA1+IUnjRJn0$L!FyO4CMg zR&Yxu5f0eu@@knGG%Myw9wzz~-#JYVR9u24+z=a#mNEafna zL=qWHx9Y4+p6<(DWDH+)WVUSCE(o4IS%58zYPTp;9k5>RbDFM9u1u7wClqM1KHN{1 z`Z*{LWLjKVTarbqCS|?~y;M!cM6XK&-1LK<;0RJfnWra~;;)2E9eg0V;Ju=(L^LXI zrK7fU1rONL8q4|iNEnjL1-D6p&3j8O1A}b0bgFn*mY^Yb$AwVygIHGDvf!obucnoe zIdOuSQe7F+<=oQw=_`r1nPq+|OR+wjRJHV~6Q7~^+?kdF(u6K5kPT96S207GbXy~JR-7ZWm z2)x+NC0oCvaQM7ZNz`+#7JR(-ixX~7s~2ZoRwk}({pd;rqWnoUSD7$wG1vg1sH~W~ zk3X1Y(J7l|mGoBtzbXtAC&R zJOk0xXMVhjTiWXV5y){IWRS8u-uby`HEUe(jS19yP`LcK>&Up-@^VbVxJ)I(*dbZU zh~?=G1qbYxX6vh~LY{VdXs(t(2)?2qJCq?j%ICnu33k{R=EKz&Ok_Yzk%`jm>H8)z z!>e5Hr5{~m+p!RoXw3#Zx8{{`cbWB==lgvj^X-&KHowOH?uIo-^j$nAD zi^8UZ&hNIvZD#~)Z^I~_PhpN&9Q!uR;}=i3SYgZzwKIbh%2?fL%SvLA!8p> zRy8x7@k<fhxjUlj)Lp&IQ5-s6x&ClZcI@P_ zcKq0O*NdflStCImR&|4hh^*Jek+74;#;NUE!%lAN(P!v#1z2!F^y-o$YI|NeOCk%Ept%1ISoNr5mGUqrdC%HLtsf;=xM7vSG{fpcv0HB~!{L1s zec)r&dEf!n<||WNi`?~V|A>PfI#%$L@tR+@H7ni&c9aN)?0|l$pBMObxGLiqi;I*u z9|zMcTwcg>)SY~!hXl6Q&o&pesroiOLTa3=(P348=|}R%@Edd4!+QBcM_xmw8dxF=X8 zOfD-@&7wLyZj@aC^=v(C_K)``K|W%`vr($+`=yl+SVA?SF4Kzi--M2h@(esKXl4f| zvY2ZdA-S-N)E|XnS~}FVO6GY*LaqF_mYTY^QNFrR(AeP1`v-Om zQ`oiJprchelg|uo&GC9p3xs^Sa?;(h|4EI_fz>^&%RuIR!q*;8w@QnQHuFmqrxS_$ z$~5cUqRW`y#`I*_c}%_&i|^KLaf^Z;)?5b(EywVav|FWwHa_aLwJtrln*2@=exr39 z;hMWkq&$ssnGW5|V>2Inr%io6@fmK$yiB=CdjRGErHkv03%2`i<994Np=cE{3G=#W zS8HYD@i zZSOAWK^{65+K}ZI6U{&%W%N{1M$x0k4O!9gvw3|!nBt_H?UJ%)MuOga2*3d40AzS* zG5%Te1Z_F|sIPIM=bmu*`~AUaaS#eTT?$Vt7S_g4#*T%OeE$`rfniG7?QNY9oKsc^ zFekEamBxWkRM{;xND$fSS_JAJ*rgd>wAwT5N>4H`casIZh1+Z-f+fQ&>1GVCtC$Db;PlTCM^y<4!QoOv=IU@QP53EeoejmoiYDC zs}T}1hXLAOTKbTXYr+)~Mqd595BSq3|DT^mc;hUv18={VR>&+rMhYB#nO(Zdzx|mJ z`N^!l<7cTNM7K$}L$MrW1q_1p-0DE=B={gwyf?Qsz>x!!a$qpH`?e~omfgYbEmn@= z1lR>*+CZj>vK(ieD3sxNtr~aLo(d?5HV9O**`(%STxnoCgLfRAzsVaNsc)a!xJ-v+Y z6B=j}Fy`t#I}$r?**z9CuD?Rz#gG8GqiC*fd!oJ@)(6Mt82-{j{DwWE-5cTA&?-G| zuhPU#yS^mdnF^}P8N;y7YfxcFRArdP^o^o7mEqOH>&sq{JAOjq=8|`oxx%L1bc-$6 z_6wEG;=`%ah#+buW4YaufmPZu6)Vx&Tc)|;TX%s|a8q6EMtT zzY%=_dbhkfbn9+dR-XTG!`iHIRX_st5{Zk<(e6}hvu`{H=Rbrlb>HUKB+OEPI;<`m zaus+^xgl1s47l~McgRYXt_LCS_HIb`Y?eD?_~GV{&+p9LIR(Mq>vR~esekq*8`N!)+-g}_^QW`i> zO>vp7BYjq6_BS+Z>7zeT+gu>Tu{1=?&S1mT&#MdtHTsH1c(=`G)fN4I9WFXegu1ew z&N<#`>3G<;k7zWAuE22&Xh&-HD(;+pl6+`5P&;FghsbbX*cN%?RNhys&mtJIV4rqn zZb*%@)2c$nV3+2@tRs#P;7XLt={6v!cJs6vY>xSXNWW6RmNQ+^dT#&pKDL3!OTSH| zcE+_$U!cOoN}!B2J<6-M@wP_ZPWtSc!yqZ?61alXV@%2+b3jr6}6aq zc(#_*xtw*ITbJ8vhfdMl%4Zk?wRY9cT58g5y_}1x)Y#Dhd9=&@2C@mkI!TQQfvMl0 z8Wvq0!dNr`^uqb%--TF^1jS}qEMhnRtqJlm0;tn!iy|Zcs2o5mI_|(CSk8(3&k!~X zl+-hNS+C@Xzttx|Haom99$(-)cpx9aHDd7RO@DwF`mUerPoB%h{*o;?JN~IGW*5Vk z)R^WR`}FS$_Q>d_&3ptd$bYI?-xvVYjQc4&O@9iL)I4x*ET=!?|NKYqN)S*-6I>2E zFaKF6nhX(1+g<^MLi9hi%YfWxxC7rjxB2YUB$C6(0RODc~E_DB4osTq$t8oaGG zj`uICzas>c6-A$Qt^mnrUfLW#w`=ZnmU4dFR80-afrFfPp z2$emF6DsUT@_6gaph7m4r+-y>6MRC_MiWJ36_h*sdMK^@Jd8rSl-;Q|$|BC)coG5*df2UkCwTqXad8vrNke^dNp zVk`mKr2#(kD2T}0O@I5COm7mJ_iX>0=TP5uWxdGhy-u??Q~%VEuQJ>U z)D^+iwa^%&R4_mS5l7qO8O3VRH;Sy@2oJ~@6D7YqjXwYtsm&|}kzf90v=kzSg>WB? z$j|{K9CY3=3JQVvtQK`R)LXT+v4*Nk}QBoC_~LaNk_rKnKh3!r-=I z`YjxB&^EdVz|ylIw;(1{xNquB8gy*21X-9H3JIJs$(!3yWyNQiffBuUjVw^OL(I{(eTz?bb57}UymPBQ`Ig5?r}QpaQD&ZgGlQT z&Bkya!;0)Igy5)ADuwS)gMNr+d>d(lBGdg#$%A zp-osFl-BFEvi?y zYHx&?b%X2RPA{A>-f+f5C{7LioSSPUKTc{St9)Ccr}ZXXvGi3*c+x*CQ^SW#r1g7S zscb|<82G@L(asG=<+R2MvU%x_aAM^x0Q$$IJ4^WkxZOqxgfhgCD8DlR`Iw~($}810 zCmM{^>NrPFUyeV(y^t%Be)0__jOpin=FPJ2LVw%-XlJ-6jw<4=r0F7!pqpr*{o};} zs^J^y@=amQ$5U!Ci*$=qL0b27s+(b_x>Zy!Sp(Q@6qCl*0rbeoq*v7JKBVZN?C|aTl!2^9ZQM+?C(}F z`4@0P@!3nB1-!@jDW-VG5|5H`!~Z1gcn88@90GIC_yCFBmu4U`l%kW3HKBk@vl3hz zzSsLMnSF>Xcy|+^uB*Vf1MwlPd~4^U#gbmx=w0s<*Wg9=kCRM@ev)X0p;YqxUmH*i zhk`~Fq1nHEaRG#I*G5jXAWju>gale1ctwhdcpy8X{k*3FIAQS z@DV7*YG40dbQfj-P0kl$Dt>uaproPYTtR9A7~=Ar)TZHFOaQWV%-XMuHJ z5+UFUZffgyJix`c#dPa5jEXruFtzH<+9q~~`;=a>B6@fmB*5QdfCEtU0p5LYv@zW8 z{`d=Gw-D;MI_t6E*ggiEzAopENV*0)?w_x^@?PFn$(2L8eQZ~ymex?$C=ErL6X0oh zga9bq$ZKQ~72sLw2Ao7j2V)v4q$viT+}nBy!E_cJt2}Kl_`Ubxs?BpdZs<+9tablv zK?2qstm7Y$>c9h*dKqQx03>v+;x9PHUEdsJb?x&r>s-5)2pcp@ytP2n3{||Ll=yO6NWfrL=DZZa6Kr9g}5+fP3stFE3ei^-q0%8&RTBFF4PCfea$) z;Yd{qLvYZZ%@rs43x?p|!u3mq3oiJQ{;kU8p9(bK$EE-e=`w_v|EA7j5CX!9kp6{w zbTvFA+{6c*{|i$1)46{|i~4_0|HqC0VdFpX$p2*Ff3om@Ll(xfyIAkKS>HA746mS@ zatdj^|JP5keqP0Pl}B}7Tv#*n45-f7<@&FxM+itkn$vg75WG9-aoWjn8(kh>e-4kY zgG_k-yh2w9Anu#3G+cXujHInfT=F-mNbPtzqp7$?Qp+}5W-;InszI-$jKurn8AWQZ zk2v_&+Ah@4dZtbGXc3M@CtOO$_L&F+82)5N5s}ZBaB)oL47|#17whP~Lzw7aEwrSD z=&aUUpmsm=(I3GI7Wi*zXqX^C#+b=Hgo&B#7Wyqzmp+;{n7MMgXp_Lk;?=)Kh%FR_ zrFkos#6dO0t&b^u;cVI{W#BwU(I-vO&ga)Z4JvIaSqhf&+zzT_B!9C34fs`6_3#4P zo<(15cXGQOAD27JS@>4-V3EOSVif5lQVP*UM)#1dFs7M7;%}4rkCO>cDqC%UI^5u2 z0rY0lVALw>_{!ANCxAMlq(7iBThWY2!CsgbMGEn|D$2uLtT+85E%qL=#_9iNrIoZ0 zBa}Kz&>RexM9MaEN=~a3qINA+y=0x`q&nlcb4aZDg9>~OgNe|KxE=B|O$nlG&>l(^ z(2686tnO9wf}2)LCbr9&aokrcPyl~xVAMEBnO;o19{x2R7;1T{c_UGB5riGs3K7aI zlOAIqGSk{dZ`8s%1l`#@Jw`yz#uCEE5$<_WR-Z78jd5#n&2xs|Cx>#_^dD6%OdoeF z!~+V^|NZnM8Uqm|kO{Q4HXc55T$n~mfqz_L+CYxViD8i$)rLK$xS`v&sVwd)Hgm8~Ya>~M3HZOz79Px% z<;kbt`>*$pzV*I~Gb)rLZE-hXxNu{oMkZ&NLn*nyh229M!?d9`it=Y$U?xI);OgK_ zMm1a0LI!)Q?6#S$bwIe%|8u_q?pM`JCIO(DC^S|K(^K|g@ys~E@L;|n$Q*+?wpGBe z%z^^<&8R_+d^&$rX1tQ^bm9m&KcgmKa@>t z2r>Dc>r`C?_5IO{1-JuNQoALQ(8yWY}>bQhj}xB-2!GED}@b; zy!#*Dx!-q?%g4dR;AB+G|16_im0K&h2K&ZnNk~E`V-~OT)wXJBKfFKLjyhhR|Ah6A zgqX4#dGw)TsALA(u5v~y3b_Zn^?9#?=BLl&=D?Sb!W6Lrz&36BbHfHJ;(YH``SMSt zQ)0=ALSGhqg)3`0_p8nROCCHlmNRZRy=AjpXba{@)4@IW--g(>qw(RmwJ`X=&vcb$ zZ7R{O4%POgWCX^YrZZn-$6e26u8L!{(T2vKWzGKIxl|EB9Ng{=)okE^p&cPx?VB1P zWuI+(RKx0ad*+QA&j@+sGt;LyS4)%{G3xd?LxsZbPZ|!E%AZhn{GZiG-ILs0*)*fm z5IVL9+?8c>zvAD=m8r7wy6=DN0hWiU@$Y}%C^;rjzu>+Za7#jyZQm+~?UBw89{`ir z!_)7&DiuBpq`kInsTAn;--?){ny}JgM)n%zZEqI0>ql>^oL%*Ut9i!s&qn+9`zm`CyOlu_Mi@V%mgYk4Byrb_v> zJ?vXH>^UE9v+0O~*q+?XsSyR6GHW*Q-FR?2_vW+7O+X7Y6VIpsw=O}FRX6|_cO6{T>HI-;quhd=SD)qf*mi@-~_L zhj)R0ihc-4wf%D7$?Kd~=F4lO)_pFz{Cioep>}}b1Xos*sW(H~mt;z80;YqXcKhC3 zUSaePI>`haU2JGz)s{ZgAgXtKd;94)KP{lH5Yq{+t#N#*7Z?3q+|0fP*e87WZAC$V zUFPiRiJ$>Ia5SXoK3I6_m*BbM({pF%`_B&JO%BWSZPd}SFrMPN`px{63$H1p9X-5h zpFJY~_%q3E*yBHS+Tq-XHNJ^wq*ho?sLWq9SF7Dv-|IsWCv5e?1wAHXrt4Q6&qjp5 zeS1=+qm3ytVq)6nsAk|K{h?PgK?6(RpxY!eLvY(At4kgn+^?;kIf#WF11+$CltvDJ znf{fEetmyZ4kiK|fdP(Zn6^&zf>%MuSpV4{D4VO4z4(|UaKj^mr>mdKI;Vst0LqwZ A5&!@I literal 0 HcmV?d00001 diff --git a/html/html/walk3.png b/html/html/walk3.png new file mode 100644 index 0000000000000000000000000000000000000000..65e00fca8116a48947bfdecc340c64d5f22e7d39 GIT binary patch literal 50707 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

    2TYjs8==6{P-<{HFc^yTbSa&mB1Fm zmqwM|n)TS!)>tq|a$`V%|AmhcO5>-U%+IxvIZ?Ur`S7Ku5fIirhrD~7zr8J=BSGb^ zDrf31PG;+o9!C?I40`!(%(@Zl^WwlGpVoW4JF{EZ|7cAWrsZb_R0d31xg{F;dx!SU(&&mdCt2_%d$wDUYS9)C1Ym(daEA?3vUr@>0F&8W=Abv z!y+FW^w=+Dn9kg}OXuUk>^S&R3)KINXPfkoX114ida%Eh7QZ%C6<5U`YcHGD{xi|9)Hog#XP5YtZGh7wLE z!rnPu1z`S9Dsyz^HK$V+Kh|m29Jt0I4jO$g@7Df#%2ih`IQxzJLT(xE&R{+>(fycl z8hA?Yy+CL>k4CPny{|RQ0-St|nV5RQ{1Mz2SpN>6%(%_$7v$va$V|1w|2Mha4sF`L z{?)SGvCr>JyM2Ap#f1|Js(j5K{T6F)dj3=_`gz*rqnDD!eX^ft`u1%~{teBa4w@`6 zH=KAsm1uNKGyAyZ2FvBvE1z}lvtD3akdzZfDZsyae$jQ{-e8c79DIK$m zTW+)(`Rx8swdN|UT{MYv#CTL(efiV!Gq(%(Z_Ox?P@co7 z&k@OOoN~Vn*IRjpTMwk5ohnoyTQv964U?1RmsS0LdtLr! zd;fNXjngK+Dy-C~hGrMC|oDY7fiaUP0dd=BmZNTNmThBU39OBctf2uY$GgWU=;lVF8*~tfw z7H9PDhvtS)94)_|B#9qe7#DfVeDz}|scYX$9QB1-jd#RmyZJoO>0>WG&@}z_zNM2{ zF2Anq$&liNr2G&s1rh7(TIWCC_@X(F@AIBBN!)>RN@ic;M+d42=PQY;x~L+}ggS_PoBvtgw~91&CAQgwAJN2dQ85 zwmL2%FO$3VR9hA_-6#aeHSTa|Tl+Y5-+VD~QD5V@Nd<1A?%nBAQtR8C6$5!ruc@lJ zpDO_Fi7~Job3V{|;kMW wCGzTz!JT_x)#e0j6|pG0L0V+`EdT7+KVof*;M>#y+{wY<>FVdQ&MBb@02N4%w*UYD literal 0 HcmV?d00001 diff --git a/html/html/walk6.png b/html/html/walk6.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fc1c6336565d96564edc098801b9a31fa0d727 GIT binary patch literal 62356 zcmZs>V|=B{(mov9wv&l%+qN@FCYspROf=ET#I|kQb|!XKY&&oE+2{P9=h^4|us+TonWa+yMjxYyk%9b0kn6To42VTiHrXOj$-u zj6~VV-rUN@3pbX5sXbM9|eR61SDobzPhTcim)hx zD2g&_j4~|bZ?x!anA~}T!z-Un-%jt3bs=|wsnnBo(@38EHS2M_3$OsI1RR1>KsE#k z2{Zq^s8Ph+AW!N9D)<(8(tA@55(+64}fN@#{-hH^+8}t55Hbw_h_|ey>JYpzo-cFVC(jeUzlr zA4|qIhuhvG8O5duLOR>tLQ5Z7<6rT^mdU4A&=LtvW`q|_3;j(wrj!NXar#_I>$V&! z#1OjJhS|8+#*ghieIlFgS#Z$5dNxWWpA!oWbc*NoCI9Zb4w;65x5l~YZ6>FmRmC2> z4ErHC=%Kg#ZhJGaE_Ptg1GasXXYsfSC31#t=dpyvK;UfGMY7u`*lkO?7szr6O+*3~ z)N4k90xlKEIsMdz0iGEEV@+mkfO82B&x{mc4bkKJU720Y=*uy|TwMCVXFaIs^^cHRkHb#ZbE}}K^ zN81T8L-mu{+0E3&$06vYXUj_Ma}hL1kav2}0Vv3dNY6};py9@Ldg|r)9SV>g!37-~ z7@rs)%dh^?)q=EGzL~LJ{n&sda{Kcmmd6l6SdlREVCsVso)J1*5evj^+kYg8cB=$@ z^$$&}M3ChBeJHO_HYjX%fD|?QS7?4=6u+riVWMIX#BBJ;0GevB`)*hwp^Zx%1V|MU zB#IvxF-VL*36w$X0$7zH?S4W{gAx5uyu{##7W;}I{{xp9S+kpW35*W~!kCmb49esO zH;JG$L~IBKDTg#RFPx6>eGL2_B%~;+GJy+}Y$$6ESTRIt$Z^h#@|SsJL^1mu9ZTG2 zxHoYUR0s%$ABa7G7-4EMcGN)_x_;OoY%&PcpVE^0qI;yWs7)vnVT%3E{WvC2H9wZb z!6;~AiAI7k#AwMHeiuqZ=YL_vzy-*Q?UTvMuO^>b#Q5McIfL61;gkd9ikJU){ z0>=kfAN;+;?J&zNkPgm>k`y#Hu&_n6Yq*W&$mb!;Pi%;5AMQRRwaa!1eB^v3@gwRI z6O|wn&XqNh*pZ8sj+IiCniXS}s1=cw9aSh5|E_o}=9S70xMj2=KB7ND2ICM(&Q@@s z5JzD|rG+I7Y6?PRWo7kaMP!Apb*Pp5w(w19c;mNi++0jV9DZzD+?N>aSgyD(vJd&d zqOH8?e23hyoZ$k?e4Kpkf_}AYweMC+!g1>RUDM4{UDL^5I+#t9jRN-{8)iQr)_F^t%*)S$B zeI4l^$sgMratSU8wo1hvpdYuHBpC3?XbJU92u_p;9*ClhDhM?Df!RYl{=ElpOn314 zhihC^hC&uYGDFrG>?$pvKpRvWlQ-v!>Ae{e9ufxRs!(+oC zhm(l!N%)9Y{z8bzl}Hc=mynY%ia_mWA0Qj}K43m@Gyn+y@~bJ#KXEI;A*PvZhOUN* z=F1V24kHhZ1cMnx0>uK=orbRVibAWhmwJf2q!N`#p~ikhd02Vqsp~SA6T1_YQ;Cy- zllL{;b4^*v2aLVY}1JQ3}ia-tTJmYuSp8miirT8WAd zFPTICuJqGy9t}H<-0#1RBk_t-BXnz4B6*W|RXWt)enJ64+6EP(Bos&$j3)F_vl=KG zL>p4;JFV%gvu4kyMUD?o@{ii*3;s0xVVL$U8mc%b&?;-HWGW&q+cXZ~Waex(xm<~v zn4YL!aafn`IgD3nV(D3$ZSH>TQ`yeTky@2Up^~K1p;8-qjD{q#W`QgWDby*PGY2y# zHAfz2**D)0-iOCh#d5^zNMui(Oyo$^)6~_()r|Y|;}7Z|15OOiXwC)BOu`TarJoX$hGL&U*Gvc zJZ(rCG|5#_)-^B zr_%g+{F}PlzLqPOT`Hnl&phQ`EUr~`v{pKHoI|Zf-Qo*H_=a!BA11LUT_^1)8jq5V zVU603dedRhmD;mz%6GMB;cD}!nW-!oR45x5^y$W_L=;CA8*~CatPdL}&;Ib%w8rw? zy3bzxXhU@uT4J8bnirpo|AW9G#Z}eh(KKGa(uB0h)w;P*IQ!>T z_*DcbRv8)$I3zOTr}9jHeasdp^sOUrHf@+IbFLg~vA+Jb9yeombDktHDB!DfmnnF( zaB6#@cILfQwdVhkvQw9Ma6Oe~G~8i{7lUuMPERS=(Y)Zi6#j{KuC@rGt^#d1LiPc8Ut$( z`@z>G9?24vJ?6<;!Q(;|dL_06q)%lCVeY>v?h#>h#-plRl)zi!S!K;Iuw~x$HrItzN|dt8kP7vch_~hix`Pb z=R_KlZI_}Bks0LvP^1z!3L61bgtd8>a&)rgT-*xpILscV)a=#N<+xYm0`9zt?fsfv@64dd;D=7B@%V?4^t(KAtQBrx*;W5vmag+SBoU zc-7f_wl${128!2k`j!A!Ba6tJ`u=ImBI)y~I~kHnOr75M?|;UD%VEe!&Z)$~`&Ro8 z*qYcyNg;_@e&3Beo1YJ>Ca2!4O)o8 z!d&q`tEFa1g>u7ZjB)tN(V}qygHG2u6=`*%z=4-YR zX1zLyx=f3{y+U18Kq%NGRx!inaYFZEJ=mw(rnErEiDvPu09( zfj?AE9+0b+IyM>YLi2xawtD)Wr4|5kEAYIvylkzrS@~{7x9PsAvuP_y8(CNM4^Ma4 z3E+rKtI*IPg`q+K5=q>_{-HZV^v(VbhU8`;9+rle=-rO{$cNJckXi+7m9v1FMErS=E-^uMm(Ag64wvey8;%Vx+)oBDV^INzOJ~z0d zXcMY#7-~K?Tqtd@QtxWAYB>+mFY6xY?k}@Ev#LM%d}{SctMbC~=L^Y-Qu8bGe`PP^ znHK2f*jo&n-x|+;H8(M|I5K50jxcN5LD}thm~?7zw77n}Ilghcw7o)xiHDVhPl3CE zvHx`&ffe=?PA9iTF-Reo50;N<79d}BO36d#N%dqEY$D-KDOdmrOrtft#5FT)(4RmQ zjB8(PE<7q8D8G|@DUEJmtT+!dOzbQGjp`{juKbCD`(l;9Zlb}tDaj24i3wojj=-ODE`D^|(=tMt;IXFBiwNZ0HoS10oEwmv zNgMSZI4H5NF-q?;2(Tg1*wURAcCeM!EmlevX%>c{G7+rhD}CKdv0TK7(vDv0XqNHN z7?FVy@TFJbhK*zQ-ZyqSU*5v#Q_q}VcQ!q+FDl6AGl=Pu_H(>a^_JWK#?VQow5Po2 z*w^AavpT(1;_Y1>_+wUPX0vbXUFDpV#7W;q0^*<&bM^ZrErR`Vc1-1rp*L(5&YQICnHX&t+!e zN#oKJXW{^fg+8!&Qf?Go_Yc-?f}erM3(pN3Rn~g9Lh^1^M1vn(O)kw}zV3lGdqIM< zX@Zn*CKr~B0XF?in}T`bc)+x?vEItNxICms*m~a@H=9YSeMuU2_SiN{< z+s8Fv5NT3@{E*oN@>ccs4dFa8;0h{^cMf`A9g8K=@z0!1t_`}wIKZLYS<`{XY0eq> zMt_H6J8#Q-AnVH(JvBu$%{)Uo`3^%V)gZ~ehL3cvA*&Rv;)>XysHU8vqM>-8)^D|6 zYAI3@hhdSWA*m^?ZIb2Y(VBVp#gmOhMV&Pwk=qP;%X#BeoR=;8Q9NzINk9SX_^66A zTkpu9Cs&i`{E8)$*5claMdwaL35N6=DV_O#C7{LKdtYs&y>MJTj4AxpP3twsrPB{e z)`QB$f9DsCRML<%Jhn@&gu>G#1+hU@iGQmx7aF-6%bW05KlF^+@v>&AiO(;u>8(LC zaBUkbbo+1{AdG9<#DlxA;$Ud{ww7d{=9m1cUGH0eGmjp4uBC+j-2bvE(8ZelasBnM zr)){(&hhl5rb#1CX0Gxg$~=~Ok^SQ?fZ@vIR=%J8G{w_@sffM7#l zhjGfxii&F--4NFJ{P+z+V+BF^sx9Q16T$S5DM1%6WKRve`?|Bz&9|%42bOz-YbE%2 z1TXwpyh5B#JRQGTnh*}Rd{pr)z8yg~4@eN>=g+W^1Lzb>i-f$-T4Hp4qPb5vz-) zfv3*(scruu>MWdCQ%FS!-(BBr#C`RC?P2604T%70mw2Cs+_%{qBrF?p4sd~l#Q6x? zZ4OrL4&3@$bi4Jn3PF)`%btYry{k)$0MGR6WXJFmifgrJx}eYd%bgLqyw|GY&`ta& z#SZHrt>X*=0+0UJ4-_Od9R~!21Vlz$MBM}QGz0dl`oP;zmkj5F0yo;Zo*loi1Z222 zd~WWJ2qb_SY*t8AP7i~QR+pKUL0clnvKUSRwS*dzK^k<7G&ewhrw2EhLipS!R^k5R zrDI)Y!|r}#qUI9cBPC^X{B>jepo8n;ZDTwQktJ;c^~Ed18^Lii2i5pf5v|Vef}Zhl%1dYpOODrmt|{@;2&FjPJ)01W!d_% zCoIDe{9h87bdT`-TbTc~91I#*2uVqi(gFhMftm;n#Xm$Bo<_^gl5P9yPsc#9v_d7R zGi@lP>iC~S{k_igAq+%X&7vhDH_JTUdJ6+4+W$Q|He%r5_azQm@JXdSg+e()_M|v= z_5Z5|4~6antAwbLWNQcTNx8fUV)BWsTEi?t)&H%+zjh1sqTH$rlx(yyPZfUd>uAQL<_J95F0C$OpWJ0MI6^i0ze-^r~n-08Z zeQBoE`x223u@>NL+`f#jeD7#iY*^SkS_NgCq%=YZ+-0|L(oppIr#y@VV3P>6QchZ| zzNv!c(#vC~ySkmifPTpNfSW##IeZ=3av#WHjWxju9b9*(1jf#PYA`A*KrHW9>DjL} zK|o!zVI?vfp}S+$SCXja0Nl@uv%e2X6s+tWJs9*tYn-wmUOd@i*P2Xgue_B`{pV7F zfQZa1u)I;dFt&6r42v{*Fq%CdtXYfbp%)i*3yzEkO=2w%jI*vM_2-2Rf zAG9cvu@X?{K>bBGW3;c+S9>5X)BpVmv}w(0jJU6_??pphJ-f72HsQan;Bz1B!0Bn_ zm$Q01nQZVu5Kw!lF&b|1SU`zbqkb?bpr(p>(9k;Srw6_*Tbx) za2jjp66XxQCC0+6cIDJA<2bOCa8?_A%pZwlpN(=9mg&E{^H1j^uv6}GAE*hAo!wN+^CV~u_+En> zcOT&&P>-`xF22axT{w&3pp1!)(ArAjj}h=HnntATSLQNvVM_@ah2Fd%XV;Dw1CgU5 zCF6+Jr_TrRQ8w#o$jHf!nQ?@ns>FQh=TF%8_p@&|tyO9s_=4~l@&YteW?(KB@MpLX z#nk7_4Nt}yhI^igg@zuMUsN7dN-^)e#fe|B7(tLSUA zUF~#RpeD-LJxciU-h?RB-iB}mTVuIGh6rn``#l*h+Jf}p78e5(Gk0u>#nSg|AuO5- zJaWH<*ICwL&MNzN1S#OGSQH(b)zC^H@NA?tWb7^0Lohxry*YLk!B#=tkW5@ed zogiW(sa`S}c~s8Hzc**@_u)br2iVpAbSSMf>VGhl2sPU({*8LqcxCDE+QoEzR9emK z)QrHQ=vs%YQnIX`pwa)e13t&8BS z?m({VrUwO5JJQVJMqtb|GfvYhyeGca?qepwo@%BE-UNJyd5m7hs{b?b#{2z6m@Rrl zBVnqk#{nwNiW#@;XhhBa7Ol_kdL+ytr{66%7c2CupaxK_^GDU!WEg)%yCwAE@!r`3 z>|H4@PfS~d2#T(8JVpU%gbaSj#RiiSQ+KD;o8-r92cJ%}`ujA-XlI@zqK{K6`PWs2 z$H>tkzNvi)S=i2TAIuYH<@G|<@6xLx05V@`KBimtZ-3Bi{N5-}&+bWx5L0=%D43R; z{t5=!8!#ShU`4b8lDMnfqZTc2C%%bgJ_PqGo@U)VIKFCpd$P^W=aHNVm62T0p{;CN z9xHoS?we9v&eV*27NWW?pgYL#Fk&}n-yl+EK2z;w3F*T6^5oL|Y0%IO?ggFQFiU)dALnAovlWl*W%0iuG0CX=fLo?P|OPL*>< zlN2I&$M$(9Y5{g5FnJf? zYZH_+7rMcDu_dpRGR%+KhDRk=V#>`gMvwG+n*44W-U|AXh%#1aXSIYJKzylUhZl>b zjaxx^62_gsbIj}+6y(*vZEJ$ z@##D{@gPvo63i`D1wY>;^eAH8#IOtDfwNp04V z-qdX8bWjPssNo{kgghe0Qs*&bd{ivl@c9jyuwQvuO%dh2BQfO6m`PS@)Hl6TBxE!Q z3Z}6r*ap#a7VzC>k{oXhY8kO45T6IU3=@`CTjPIcNo}?KbB-sa`mo#49+=GRhjAA* zZ>(0OpXyIEfI0cHD(giG<%}s>Yy|XciKS9)O&(S*(=BcP^#ar_>4Yh+RKF;*^TOGc za-GGPegky+GxmF?h7%DmqPhF~z&s=z?B4RcpJ_Y(9UrEpVJ_7L8l{$sO?IRDPU{GF zf3XY!xtaJd&4oxNvtEizxhucj3m&K(P5MCPBQ&FE*$3(9j0axKw{I$(*6OvA4U-*5lSA9#cs9wMz5H@D$7f}FTm?EGzK7P@PVmQa` z(17ObWdu4gXNXP7bZx6qS9Qakj^(W8;wnvJ&e2nqhw~jMb9(CZ%3^ zi#ug}o3OT_YU2|%ySnj8WVF(hA{ui{u z1O}jf&HHhNYUWZiQ@E3EexWX?xLdt(&`z7t_srgrKF9Awgzvyus8mW=GDyAoI~{*A z`i6UjJA+HnG|T*indyM>YELIW1P5h3hzd$#4v{`ps>w1C4bK+*jha{${m^~>$O2}R z7RA6Ow>^P7DdA+6SvHzp+^4J%#y%BH3~hogJf}*MOvWDPXg4**5_8N+cY-yQ$hVgq z#R!5Tes8Beq7_RDi@ZUDOm$}$6_qFiW)@Rqj-{_8`c<*LofZsJy)(VBRvMjFFPQX8 z*OHk)hT3n8e+5QoutXU=m#OUc!opC7y!Rr=eI}!ya&rNQRZ-n+bMK*~CsI~Wx(O-I zJ!ecN*Y~I%G|oI|0KdSiDgK|a`C3=kgzHwFFD$RGzTVS%TnZLumYAId{$gTu4Sw=x zp)W2-_&1Tw&olDl?X~1i?+cKMU%wI)?+SS5`!fqy@fk z7{5%l)p&1u9w&_mbJPn1&KXeWf(tbi-;rmtJV7R~{lnALx`xV!3?)KwFHFD6Qp3@S zer0^eBK`<&~2GH{gx9;Z6l6i|EM*+SCxb}5P{vp)_*XvT` zj&Ohb8RO?C?3_Tw3OABXzB?iOf+U~>WfDJAFc~zA(=RzhLP`tu`&+xj9E`raC3mi< zP7y9;J(?NI5kuaQ1dyFoOOo8L;CEt)EYb`YffY!PlJ#=mT*VV=3*AoR!Y!8?DtSj#Lc^y*+D;&Shv__t7P*lMn62vPgepmn8ll_7P!r)5q?&lgH_9}lJEo3Ky=^#5T2LcGBq~=uZ zvfiadRa|Ei)DG5icl_xG!7C8hnqqQbc>d`Ap|oO{eswe_{ipF^u+$|Zb7#P zbmF5`5ov;qGzxnASVVr3Fgs+q@wEAPWc2Agf$*CtZJ>NRPpaNk5>t_h_?nQp8lh3; z3%hpBzmj|t6Z);59Fwkd<)`DKAwaovGiLQ=0@Q`j3AgnDModKn_UxCPgn8*F&NP3( zRJOIFwZo^dugW+1cNWp@4EEV>-w4}fHygh~46_FrZQ2AM zBjoYLweTcJnER#~(QnmS1e?g0Q~;_kIdBKmDdZHuNGxd<9A|BcNXBV(6JDMgI)Z;K zbivMVn21F?5|q*V;hIrr!n$^S=-tep${KGJR(nb-UT+rx*9 zbR=e?568g;=eH$7ro(X83&+iCJz5)spY~*Q1Afhk{{B-zS4|GJ9p951ccUx0^!UKA zoH7z%itD-eeHLKriCv}m2HzN4ziXCp#rCw;@!fMGxI3XQMpyF1L~Jal49vBp`T7c> zog?wMr!p2Rf!9@$E#i7oeQSSH0AR8B0ox|yIf&1d$No}&7j2#5=Sj&x;ClM4v7o#} zSPs4*D|zNvc$Tg$wnys7Ca4DkDm56{=k?2)af-+Yiwk1Zv?O63?>n5m;5#^xpD}G> z2Mj{<1+F~4b3>!aK>@N)*ax2zbY=>Fh^$L@9ut4?@1$#W1$eqfyRy=7N1MgP?z^S{ z!5^P5W^kg|$@6%CblIy&2OK{gZ!b`S%WZUd4bYou51QTiDIgJx5`EG>@>%L_`=c~N#&3g8zH2JUq}BQ& z&eq+*_h-LO zMmE7vOat7df`23ZfF(3GE1_?qR*toAWG| zKB?2TpqcU^8FD(uXP}B35H8EL|6%lrceic+U$vfrFdQF|CBBlXhGXiYwnm3b&ykFu>FBCsB^xc7e-kW(te6&ts6VV~Bx(+X z=pC08Bw@{s3BLCN2s*0s7CjGn?N~GwTV&C%h}rO?*b};bn0x56euwI8bEfTlx<%x_ zoM+Qs{qS9z;X#rxqw%<`+T0dQ6>K?P*1PK6y%kvR$`n6(=^rPd4LxIzrwUCD^? zY1CL+eo3$VrVI6)$CTGgTakEi#4Za!Xx3e^g)Ggz?-ax?S}vkXxyFt3<(^-!kBJ$3 z&b{73=ElSgVShGPVB4~M&f_eIwMG$X@_%=W>g3>4nDdh-Tp`=56=W<*Q+IuWlzlku zJ(>eb+sd|DmQqykiZ*C!k6=Mb&HN@b$v<}l(*m$_2%8!$?fMlQ-56F{POiTb$X0#1N~-<7!2kJ}4FY`5 zsDJD%b#8|=Nm)=AHmCy%}4KMX*`}? z6;{LH{%^gWsj(ihSY)t-)5O8A0#IG5Zad+J3=WnrD%`%W=s2nUIabhqb0Z6?ld5lP zYLcUBk-2Vp%IZD#QW+=gNy(13H+omDlTyPGbRzm`)ao-22=yEJh4B%Zn#qpu;;3-W zvdql`XT{m}6#7T%4S)0STZo`_DdyA^v(3nN!N(11aYTJr4j+`m$=5N3-+QwPb3blw zn9n*FuLeh@P|dec8%SZE_8lWL?3Y(#WU7pxyQyvo^lq z?)=NTm;JP_5r_JxDe+t>ZW>-G6tZF)% zO~pvpIWK8J;e{s5wR&OBJn0((-4msfI;e()@U+mK(Q4B~NBB%FE}Tu5K5L^a;Jq>B zE)QLL;lrJkfo6qnL&$6fFQ)?<8XAf-75?uRq->p`X!bbPKy!uJdKpy%Rmm}n&-dD= z+vL;*7aX#>>{22kpv$hMtqmG<8K~^*l=rU(mMb)%3bQ+?gxE-IxWR+DaOpxCVQX3N zD)AoRqj9_*%n(xt4_X@L!8S)~>Y_QG|X6(vXuU~=91 z;py!t>~hhfBg^#Pu&+%>Z*^QE{#c^fR*%Y71E<_~ySluP;V({udViR(LZPFmI^bDc zTW!-l7qsr%>XDb8(nn|HAfJ_HfXXna{>IRa{=tfl@Vn-gkgefJ9I4bKEyospR;lZ3 zB+)EB2ct-7A58>2wb3rhGWENTycwC5(Ebj=^E%hNSH-=bNm~9apfof);1(x7Q!PK# zej(?|a*h+ytmR9LLBCX`+tYEW>}T!#S0ds=+>qKih;O-^QpCy@nNR7*)>b2Meq(|TvB zXA1Ua66~>kD|zlW@6?40LrcTo4oWlK77~m9m5(Takup!aIM$VjrVZklzPDcMMpX@f?hmNL_uVC=`Kb_`P_^e}glkE!W_-VHJDPpcYBCVM&60o)Q~s%76XuYNNbl~3 zV76k8|F)vsSC}SPdmk z6=W(ZV@G;91GDPp`5qQ~Df zhOyhhv<(L}E840lKN1A)%1Ec@>R1}1f|{yNQlQC!M`1)%==D-;lKlUtlXU=b7+3aP zFUYMBfz_$y-|J^o|AHdWI8abOqbE)HbJdr(lEG^IPrLXws^#RJ)kE!& zuJx~^>wn87nk@)ZZQI)j!}pFfxuL1zsCdB4N2%s$Ht(3q))zh3?pA7Ih@B5s8hbuk zD(N7IscA+ypn-SrP~@j?_}{B_sekrgUxaV~9d^Ff-^01{BGz-pMq z+b5MvXr%fUsOw)igZh5<4QKqssUZHTuVQ$x$y2nB^oKG)S#>EuaMIX9v4Cb%r}KLY z7nHs$DKw}Bp9_^1tvc_^cQscNqk^(m&})T9^E=V@>mD~8@cf#|`DCYRuWh==uP-CK zs}h&Al_$H}i_hQ+f=kEvhxZYJ|FPpwUxNq&StYsW{8g*r0ex(e&X1b~N3)XfrGCJehcy!+)amEMep`WepWXqF?4_-KAA&#Nko>>n)J_l=N1}^0= z@g6^O|7q}BFc)OHJt&F=-(+Y3Odh#>ITm*wpLkr5Vg7{+fA<2rAw`7|DUNJ$ z>{2_{b9bJ7Xv>w0o39hrEV>x6SX2_WWsm8;6KfvHRsv4?WV7VD${mmk00Xb%InrC3 zW>NHFIy!Kwc@+aDHW5-(4*Y1Yu-$He#N<`46>K=@`cg?1VV<-`oEqO{x<~3JVsk+^ zfn0SW|F>fG$Ppj#Mbxq3VQCBkT>y>q#z0I7ZgZEtvxyw+Rg$O{o&Uq3+Ec4wv}=VC zM{DFJJqGuqh%ti*(CK1P%XfWI-0ANF{OiRHi6!izEvm0JgM4mMiDa!jgJ$lmhCUEB z?4sw`@lWA`FAH{Kl>>7u(Ds&}hQrwfKEZt21G}Ir51oVS z@W6kILv(tUmr`5p<}Xn)^74q>9H^<3r%!JnOhyOuldt+i#M}YtMeqAV;%AMfMwNrth$m1{-es<%rjvN zY<7KjU2ok3@m&Nymut2#u*gy_9x&(LjujE@NbWnq(>ek=5=e$}Y#-t7 zGNnMbO`*Pkmt@`N&HL8bKrQTg`8ZVPbY{8?$%+_nI#o6wR56ho|34K7!|2~a#1op> zXEEbQS$VY(Wsa65JrTOGsvFP9ZN~mpSy-H3FBO$FZ!{r0>)TG=p9mWkGRUG$^f8}$ zK*+(XZ_PIXszLk8i2FGl?})vo-)x=NIFN_6Ylzk-EBl6j^#$%jUrzp9FLj1wi~*e9 z92nRCVWVxq-DwC5HTlnevkqH_bthi&%2yuQXNg@g(M{rmMc*T3zxPb?}fVxHEZ7B*`3@1)ev;Kt>K zu37M`He{gt2)zrk%Bh?+EB0yLm@UeMOk^sS@~-eqfS4$6rb(%Q)0%qpT`ldY9NmP^ z=Ik8O+mjypeWV75{mTu(^X@}|mW(_efGP2MImmKtsG8*NuYR18v5ye(*{XIVSaHr88zm~qbv zkp#(G_v*O z95@)}97lwu^LXFTaK!=uRDJ<*`Im=7_BxWQ=k2+Y0={V;3Va+Un1Hd+=n6&WvCiJv z)|!XS@Wh3JQ!ufO?!3jOIv9mSnfmYJv?R})gg@_n2V>rKh7CQ6+$dKTNSJ2?>l{e< z@O515E)#tj@v|n$nl%p^8EEr5E`D_RYW{-%AB+=*QD3F=(hKVQY+Xnee7!C)`QyzD-si>Ql5WX?F zPs^Jv7Wm58M&C2&{o#ZtuLDCjjj!oz{Y;vDmo+kytU^@c3Qe9vcpiOTs#K~yP!TK5 zOu{%bRL|B-^h-5qHcrc`+3qp_Ah4irI4VQgf4#ftpUjg)DC3mWcmdlhVwWm2XV1_q zs?=~c3vab3pfksIncQT|6aPOi)YewXM-`2;Eb@*rKJ%8nhoA>(*a=Qnl zyMIUZvRXvX-9lyfuFW}3URyc&7b+jqRUz}Ok{+l$#b3}fjom#N0O$Tc=H4ITaDs;e;)s8Anvx+$NobNlP-pmi|NTc-uqE}&8nTKfQp0PCwIr{ zK2^7ZdmCal2CeX@8anDZHD*f9gT*b?CM8pP;Bk6!pJt}5Ug1hM6_Oo;{nuRPaGV|2#;M6(u8i;p3~m`gkA^ci7s!I;-JI&muRWZ#dP zGJy%R9@XgdDj1dTcbzz<8|e?ROG&@@Z(vX*zYFl2p?zS77#XhNM5p_c@y`x@?pv*6 zI}q+y1`4ZiRGt~aredI7_oZ8Rdep?b#nc~eF$hlCxL06dgr3|EtsNny! zi%9`cfzd`!4HBmGrg)6%H?$~*jA#jPkYu!L!zI)nlrzP6I3(y^+%*m<|5w&DK0AyQ zG_F;QUnf7ASLb!CvsfKR{w)Lc#SmEX_=NjOgQ56Og@KVo=z~($^nyjol4=W4Sw~g! z&dr`&=)Tg|_RoglF;YHy&#CpzbIH-X2468xzME3%_!)HQp~w`n?=$>fn?zSW3m&G< zeoU6Qr!DD%IK%4her9ZBf;k)zKWrxzM|gG#iokGns(N9lNCh>T*yo$5$n;b53ojOu zX;%QAxtNL`e>B%=T5piNHdWLf|AWEvuUHG1^=46Y`*)(?YROM-FUX7!Mu|s)+L-V# z^vuCIy-?+{&r@|FPH}Kng@rFeBOChrWdZJZ@DQCz?9EYk%$BPfQpFA70Pmktltb6a z4qR68xVY_;B%ii;ly3<@qzeu9HIIv*M7DS=Idr})sRN6!=i~k~G|kjUF}^rNc7Cdj z+sm4QtngijYOe5K`V8*ZrDeWV>(ikD)HntrUm9&ceN`KBNm1H+y6V{y!+-B%>f6T z&M0^o&1Ek9R($wtO76zee zssD>FiyR1{%C479U!=KpdgPs-j~m%{o4LV}$zlM#W!9<^NBCbvSZHWC0}m?{sw`rw z9D38{NB?Q~Mum<~-d2WLg_Z?8twPB1pN{&k!vQA+*u5=Cr5~K8m<46=4<15_epxT& zukF*t(Ubn5iwF9_pLW1x`qBUIy)Zev2aeo-UkUyxNqCsQ-2M%6Y25$j1^yAg%ZZ}# z@?rkZ9VZs7*k@6+26Db{%JP5L-2a{u0L?kT_)jta$2Ke|L^RJJl>IBO%s*2I#N@Ms z@OZhWx&{z%KhkoAX6Hs~@Z;f=5(ZfY6QFFGi%*hp=<0h9Nq_uj|LAh$ztMTC7o&@d z>67KCRaI3jjS}@nV*Ki1b8>Q!F)_nB4JW!7uV&~#2?+^=D!09pm^j}hLh+PY?5 zt3M}0#wYZHE94eEhFRdo;*)Ec#w{f!c6(Qo=<7C(K7NgSD;D)(0xziN>o}12P!U%` zXMO%Ez7|rM1(6814#eOtiEU4R2LY*|_I$RQ6JS{2-TG&5*O33N0cM6{dO| ziih&N7h-lbw)(FU2I$%I{!qkAZutD}LC_45TG{F@nV@He@7rOmkw=?G<9DZYoXX-C zCh!qb)JkK;1;wDi>x0KV3GbJ}B|m;k6a7Z$V3SV(luQ@&d@u5Rjm_^04mm1sR^ZUK z=DFDVdH%-K$mrwk$#T?cvpc{>yUr%!;J`8|PcriGaJta(c!5pV?_n3pCB-*3F=1g2 zP|()V)s1fTzS~N(ZxdUtvyDqlrI*Y2bE(QGC-iC8Q`kPGIIcd=lbU#lu6Iz7GL_pl zl5|uB3SDhJ#IS6n_nPhUX87XuJ3A?9y_296ok^k&YbK8P^)hpVvU%b;v=mar>MBou zUeuOe7+4W%i31BAPytN;^e1O0r-84FVQF@RfgXgm#ihmKetyEA53=?Iv$zhDqxFY4 zB7(%p)_3klmCn{$C(HE&{(9#$NK#@V2uOICR)EPdU2QSG6-MSK>gC11wY^v-)=j_&B+Pa#?Dr&rAJixwjzQKF*GqL0^U07lc6rS3(*hCr-mHGXE`h7Y8 zHmGZcE3l&w;*^QlhL@{^%u9{s0zLhsEhs1$7#jK?QEZugA_r4oM)}{%S%}};!-np55>o>=;UurFIGms*?;Lif|p`Zil!E*X!lw`NIt|sJTl*^ATcIi;cMO2f4UE>^H^vm&CA8FssC^t|Mo9|UX)nz z>m79bnSN2(mygF9nSK2!42~mJ`jNm?_WaFLNB3;kd|)z#*#hL&;QULH%gXd7ufF%u zo6}@BktLNj8GVn?#QQ?ECb&}%YiaUEcx{6YB3;b4aHHfC5HO5bhxRBTnl>*{taCm1RI%(EgqF^mY}N@h*s=;zEO;OMKyxfhUl@A_AzB>7n>Si+oA`m* z+#C0>)6M+N8$*|W95>(F9P@nWP772gFI|LI31S*9ni*iskx7SKfANW2cC@HAx!*5l zYOn%7o6eK;yz04=A+}VL-nq;EVVU{8b?ft7o=%6K#he+n4`S&MR-SVf=lA0~U4@vu2a%8zu zj0{g{=~^=P_p31%V%dH3EgB@2K$%Iz?bqZO47-@P2*0`@zwn9OT4j4Vy$pWWfn{vO z^5Q*NZNn78%2Oa(={RC;5&M%)#xY|FT~aQmBW-576WkW3)$>91yK!dTfD1)M7Y}`;M5_SaB0&7?VfpmlDw4_dNpRdww|uei_&lN!c)!+eT#9Ud zEGMa5!V7M#9k!QK)Z+K=cd*>>rf&<-F=*Zq(wls-U8)f=nJZ1YxE$tMK4N*5BvLEU z`{{?w6On)YrGhO(%BVkvXM*Yb79yPSU=+s;VO2?4E)3O*(JYXmD^faxH8r}vlOU?n z=fN0_d7vj>=h0+JIqE`*=h4=q%(eG=rtiUW-XDj+{)Fx9WY@#HlM%;stmltD&(`#| zyMIMF>kKM)Qx0o63JfeseE6xJR)o^KNaJwbgOZ+iWq5nMxa4-;!^h7O zvt=W^ZUvrC8G8;NxqAr?dUJ~naz^@N*tyJ0B$^Q^V+*41RW#7ctDfH?ex4(s|WoNf;CCN`T6FTA70KhBR;kq`oz=NHfNDnKLQT1*zGc;Q)rB2=ZLRo z^cOMv2i|FH?YVWcdYvK?d-q)a3|RZP!21H@6xo0JlQU)zx%_+3oWuKnspp8)G5BnfQQX(fGIbUQSDd5KeNBO-#O%YX~ z&6Vy{UQRr>PA@nb*P#2Wiq6^xf0j(m9HJtIr7$g?^{9fmcPQHzWjGqUrxJU8-A&J& z<%Z<$YC6Deo$pMY{a`PF9DpBro0xoR&1#_ws)`-ps6wIR(~ zvhC%WeP>|p(bd+Va{snIoo`yFl(9$O(z|J*I2_Oq<)o!MTM3SerP6)oBfxRHs|@Un z`%Wb1^=8F@pB0@|sco@px?U%5h~&p0N|}-TH)~p&mBwvuHg;sz{-aH&7Pf9v9q;Uu z`P=81fDRrn3kKufw{uNxDf{;Z?crZs9C=UhOVjU@qucwOgyb^XaqLHO0pbGf!C{_o zWKN5|SnnIM(Rl6oN$g{BV}JSbS`bc=dBVqP)=U4QHX5w^m0H|w;3xWG%IIOt$$a8Q zCpoSiYVfOv{bS!HDLXOSfsdKUL^d)1bu&g8HrSW|yNn-rrl<<*rBY^&0SLQL9O;)j zs@s~_RI%jt;ZGbTwtCp3v}f=_PYVgs8mOhcWhBmpk(`T_;K(Ysd?uWeBXW*IoPSa0TJ+57=^+uK;#ge0rA37o(V7B8N% zg39$C&wJA`y`^Ee1WUoEcl_v0WKtlezL-|;h{=Rxz9tcN?o0}w*N!q3e8V+uuaA`` zOdygJpjZZ;4(UcvhAk!knFsvIh6d63&0N`n^(wdBN_Yk4Ma=*$TBA2S_cYD|+Z9jl z!3=*i0T=c@VoWE?QayDy^A~~mLxR|B1BTUu2>uRWuluk7N|{QmVQ0P^ag{I)*?J2x z>VdZ1YGm6oBOmZ?jvR`0wnxEqVR`D|0-O{erecg62eXsZ0T!-~aIU}_eTv4))aNK=- zC}ISG$ZM9dk%hXutK=H+WBzaGGGoENzyx%3u>_P`dx91ImvP(nsVa~&W?<73K zD(SDz;+bG3U4H1^s2#9YDwW*9kbWZ z^K*49K2%fA+cKb zrb>$r2QTRj_ppdp5XmF#DRechDpItv{5j={RMd`mF>OB?enRE`#a8{&>zGK#tY=}e zMssFly@x3G!9hbvUS9d6h-_U|^Lb}?62l)7P4?N`=w_sOBL1@;O$kn6+YY{8d4Mb6E6RKRcer5m@C0;fcvY!03_K{q;25_ zt?8CSvwZh@cd6E9q)OH9qP*S#zXHsjEo3gA8&+wrV6x@wh88^rK~1GN2r|>-7Qt!~ z+N{3ZAV&L|*Xrs)z<_CHJmZ{Yv_qMeej6N&_!P`O-XY^v+1=YDT#wUO5cSQc&HUK@ zVGZHK+ILbENNpDy@ImpzJ@D#iy>*PsWAA18kNK!Mpd73Fs=HY|WQvK%jQM>}P@WZ^tYI_9)C4tB#86vHfc-M@>iU^NPS@uF^U z^VL;K+VJC1eqge^{ZE+#(VVZL!D97B?ZiXpe zJwz`JS<}mV73`*TAdoB<^Y-F)%dM_O3ma)UNxs7Pt(%Q^NceY3WK`|+NFJ|T5rmr$7Q-Ocob-Zx zsdAwzx3HQ?Dt`?eRT2u!AZ;rgNek|rr8I_{tV;39A_|@BNpC{LpKqt(FVdji2Chc5 zD3977``>fVI4?O73qn+GK7WxK-!Xxlm&b24k=3HnV)pE2ETBW&Lh&@N|>3 zkdyY(Go8(CyA*nrV03Nn1Iwh%j+A0*7$1*oI3E^O`D4g|k4VERBID`egG{MW+O;GO z%1-=DItjtS>E{3-hjQRtn7KX`YyBP7AyY9Bre~uWF_+&BrE&iC?IF+Ugk2J!_e-d;Z`S^_y zwxCdphBRX(T7vAb4Rwalh1hb2{ zjs}DRxZK&QbADUOOGxhdzWKlkRK75WKP~CL*68Wze4nS0jaXQyU=XeXcA#6Acz_re z7jF&Rh48e`5nkY=6gekpSL|ASFyi3<0xI6M(p(OOD3p5nt0R^_qJk?{D@)Z61SeSK zRxfhwhh2PPP7011B1!#RN9%i+BGC_uBVCfuJXZV}Bk8J54KG5Ii`XTYq`fkb zWAEFtSVKT&sB<@~t6%hq%2K^mL`^;jN`RiOqq<=Z)c0=$OC>x2Dq=M<&6D1bYYTS34w28DaODIyTwGV*lJUYdnaeZEYv}(Tb8w_~J^vpX*I@c9AxfqEFEP3hrBsv&N;{u*3<|1U+C+@)ib$G!;79&!=W`}3gvFM?zjN=(&g=uaIrNL~D z8_jnmWFR?}m|4vLIYJ)EWEXR9!>ukL^0=ld2TFiM?L-y4J(>RX25{{Npjr&=4ib869^21SKv44KOl;W(h<# z=N^%)5J`tm2Q`5rYd^mK_Ny?NS`KyqRJbwDt>pKnO(bQVK$rJCzB9Cqh_;mJvx*yZ z;!)dfNNM}F|6TOngUNp4co^ zMz*&yMDURWJ;PS4xm}I&P*Ma5$UBZ9$0sFi z|56n0+~^FRjBH~-MK$TEi%H28_9Zm%d-zoL!aaD)6J%43NN(O!w9U8VyNZ<&T?3js zLn!7_ffQXK7uJ9T-9sg#E)S}+@_Fwt^+370J2+FHi7y68cPrKkl3?^RY&wGw8lVi= zAE~KJ8*=iTsVOQ0dBDl93IMRvB%a9{-H>ei70zn(!cj`<5AP?Od)b789ZpVQwQqP4 zpw4xi^L|{wkB~Wcv!1pI&n7lz8+!p8^f;D!A)okeeOGl0LR!?2>&nS2k1n1Cj^SYv zzZR#EB+(1t818Ejw6N8&81J}y=~AzFTqvL3UGU7sF*p_hu8np%@RcDhaY(EZ0)~)^ zMO=FdEe)u(^{&VuC;j!4W657cYw2K#Z`CAk)|dT3=YZ}YXrg@EyYSE2L>l&nbQx_zzum68d!=u=^<8sq zJFukInLLu`>r5T`(Hx~`?8YTcbAL`v^cktcr8e<0caGnF<~_3v=}0R)MHDK_xZ);V z4}U<#Gv)@8o7oU*ebgi#@N^OqXNV$zIt<389ya@ z*4I5}>u~{Ty^qZf^*e8wb5*E|7l*sYtun^&TP-68& zg%dTfPZWBFL)fkKga4nzvG=e~M7G1iITEftd{i5eimG8mtQIld#!!Lc)4`+;2?~-# zc{G1T`C84Q0Lu>R?nvrxRr_z``Cpi)*w?=(sGy~?+5bdAnH6A-JM_}~^|Vir0#kdn zp1)B@*dimV5D~*fAWsJv)+kZP**d^eQOLmsO-e?v)^@)85zdN^EUENf6c#@OrjVI& z7wL!MMA2nZVEb+`MluraZBj)0uF!Ae3A2m8PybhKc+{k#KN-hlzPA^5b zB+w=f-6hiP?^jt*pFt6UVf$7-OJSq9ldikudm_cR?15pHN`2#bI~Yt=Xr>9X%P^OoqL4YKdkm$i||#Rex` zo-q|@{Uf&8ijv6YDaRa;V^V+KCsbU6^w^naW%aoi=Hk+~f_X$>30gIU7!P>Lr7~^8)0uePT zpS#eav*YxH>x3c>UkZHKz<+>r2CAEzo8b`=ojG5^9A?!t76o;ky|VSPUFT|rM;FM^ zu7&kXdP`cp4A?}F4DLE3E!X|KPc0#hB^fHqf zX}hv~rJB5S>5PL7iurv{bCp=+?+t}TIs{CAdXte+{d0|7KKhNa@#jgZsp#!Sgav<4 z$R09HwpDb2h-+O|l=PUKb7YAFd9$iXd?Hp3n~7Tt@!t`=OCe0D-!EbNMX2IuEf5mAP+2>YkEvMns! zIO>!X7elizVwrU6450w@!BhdNcCGbpT;*hynQXd{H(s^*Xcv%YEj$noiGq!7k}L#Y zPRqQ>^U550dBFa`L=IdsZdTaX7)qiu)OP&dBCG7%_{d)*T0t4b%G+p`X*e;0c?4<58?S3B z7-RPz{+LYrqR$C;?$JoS@p3U>$K@89hW_cS&HweK{ntvLV+K%?QXxwiNap|au0NJc zN=Ye>+t~Ei1qBca{y922T26z|`Q1;WXJ%BB`VdWwK~LFEdm{wI!ag6gw6q9SNEdOW zXsCg0Y%1K}7Xtv3xuK)=K`|dtRHRg`O}lEoOJsj;V`ZY{*mltWVDdjPS!p+NVyEBB68|d_22U#!vn2xIBRrifN))82U*}0@KPNp+F>oC zkAiknuvVP^CG3=Dh0xBZx;PkYJR znf!bGL|3NeBO1gRJ#%MoQ%a1F>F|xf$?>eNBfVrrP<~1HcCYNE)pc1zy5zRJ(@Dv8 zha4rkQ8*A8#{aHQg=Q66>#bDxF*2m=?8tLSJEVw778e^7DZb(3pNv?Jms^yB%;^Rf zgI<{J`b0h|`PN<#OjZ6pfJahCo-Xy#n(K{cNQ8a-mNhc+G$CH#Ta;)$5PA$^@+K($(pxTsshIgQs_oaGk8lYOP2ytZi z#J@PK7michp%pweqa0kfQiVh^`2X}=gB;jIy-Uit%BxTzMd7z_I@S>T!ea?~eP^r-y%|%YXS*|M-9oJ!)w{6n<0X z{U0s=i9{E|qh*@M``|MNj*Q6trTQ>39(UR1*T^C3=EKu7Fes_2hFo7?N5zY-a_KV7R94KkdfY?m+UOm1%BxDz z!lOg#w=J!#tPU0`DRXmkS5CjML#2SF3m+{>IhG-??_0p2Xgr&H=NR9F>un)Ucehv>YDw%U;pI83>74}D=tX!?r6nc8+mvCA@AZUB|bEdH4|c_p(2 z?G&7WVC|jTl zpwohyEUl&uI-1YgvIqHW*NTOH*MQ{x97z4tRZ{6=H%AA5RqlnIT|m0)jf8eRZ|hJr zox{0s4IjNr^LUt>OL@HH{74?hEAjqO#w$=1i?;jweBpMd#aa&=Aj{=g7CcRw9>b!T z*mydu;1^**J>H$lWpDkwlIH#Po0}8Oo{;4sruTJn^j#fUwfdBr!Jc4Q^ex*nPld)^ z(*CV~%-~FxzT2YN!Rj`5OXH@6e0#|YFIK#GSRuR|Z;7URBCGHxQWS1Pb#JXEj(YJCnR`9q(X4I% zpuN;@Z*pt1kx>hXd$?ZJyxy^FsoDHcU}p5J(flo+-`(ULcZEUh6>h`_e!K5;KbtL9 zqSlI(Xcwws569bph3gOSN5Y;++p(|c?)rD*h?Zr?%Fvty!%rP~5D~v-1aG&~9)+Vi z-$%FOhsFS93dhm#oO|$dqsMXC3GLX+`&eLBR7=TeM?hj+`D0ZsV@tc=yO;B@#$>_m zPiS&aDA;xlm{Hmz9hcB8ZY}|v2eXo|XY%#7r^peDPJe}e8 z>MWgIp{SL&&BU=_t@~99&O*0ZYgbISt3P#=8Vy8umY%8G2|~ce=NNjHzlDLpX#sLM zrS@A*&#g7LX3-mJZ^|u!R*G#v*L9NKlO!#6M#$NALoQ$FvT&$G*n0o{L)!U9RN|RV zF{ZXFIientZbVLe>s3PVB=<+Oeg(36TJ{vI*)3%`KW`Gdp)zJe>FMX)Gt(YuMHGk4 zcjx;{F&~M~L>`G+?8D3sqA}0wV}!64ZzW4J+(o|2%S*ksD}fjaH``t3!6ZHCAL|Bus$mtZn1B2&pWk+iALp&+1{@?gAObbK6w*rF{TaZuW^KQ?ViLIVe z9S_*8?p{>&^YGtuzo5<*N#zbE43b!pSdl22Y5VSK?e96s+-FKICj;t6w*9Cd!%^K}scrOmvB^ja+~Os- z+fo!aFHI@iGiZeDJ5t+vk@ISC zroWL#d-fdb{}Bb{M@ZTV0=y7?w%E6pASP=e?TXqp37wkU+QNi9+t%wDJg;Kq*RloD zqA8UeyfRhqPP|IIVKEy7d*ruu-%1R{=z~^Jur^)=t5ZyW*>IrdVVS zKh{?t+grG)&mSmVDMIElOw{ghsTTo@7yMqLrE6VNcIHP0;7jb-^5v1k<=MQr`Km9Y z04u>gP!=RD!M_>E_EsdaEB zq;oa(;aIuoY2D>E^h<5s%SOrE;bGC;Vca@1m%&?Fjdi1b>lO6ZoavZjWAu!M; zsk1r}<^7CRohy(~F7BR4XJ&uQY(2Hl=V8!#Mc7NtXEQS)F6)(f*KVsY^?CiGUd88c zcXGaRXLdDFO^4}eZRHiK4vBJQgEY(gMR$Ni>9u3d*FAf%x9{l$6Mj~9SL|ys!QEeqr)T4k7se!lNyT(;Ubmac^3%<0=9Eh8=uBj-jvDvzXW!@Yii3kbLIv&@P1mQ< z>^F~Yh>k@~v#?YSWz;rS2z&m7-t?xf81;qvT-0PGTJ@*)d&{;NQYi?PXydvSRNSG` zIyc=L<$uT)rPi2>ItERgMm6Mo0E!LSINtsr?z0+%&5~Ry~ z8OL_%j5l+A%g7NneVTF;ApA6~5r6HmRPKKu04*%ARAzBhC#x`bqZ4(VP~LBCo}n#o zP`H{WJzg;zk}6|yR9wA{$nW1qFz&>(eDeqF>teJ<#>w_V2@q~8o2JLa679f*X@g6W za$M7$PD*l}kKMEU)u_Fc+FQ-J=2PRl_K8wW-&h3Xt<~;lo>F(p+CIs7=ydhls|qD6 z<)zWO)-Cx?e}MB9d$dZKLq4awBF-7ubsPr!n30z4#4`_(tL?{g&7I>=3?WWMcSw7>-*~Ak>2#;n!Va}@QS0sRH=JC52S`- zB<4T30NUnPLw)-D;Qe$ssi)?{A#tJ0mA5Br^*XN}j-WR4%leC?j9iE>O0)W-7cuju zupTTK%Zr5kr8=8i6}0xWG%&W+W|p%OlJZ)lutv}6c?*C%RxNUwl|xR?RIM=5zrW@o zxVD_<_s!YZ8b5aE3cW6naLM}d*(cPsK2)df*p7sR)f}JM9}P<5_Y94+Yu$-7mxFw| zQmTwnA8%2cOyq8sDnT)|^Cb?mEvY*vIs5B#VP~z`;3T6_e}HdmaUXaPUw`5n#RxiD zk#@gAeFEntdzEebKM1H$?a{!jjhoReRoa_`02ie;{e?E!uZ$d&Y(|XFaz^O9rRbUygLD*hm2dBJV(bd8|7sxkYNvNK z(@W_7-7`s9NY8m)Ws~tP4wrUD>lX-c9N(0MDDvlknMC{XI`a5{K$9Qg?dYJ{UQb^$ z4d*>Z`a@M(rpK-~WK`aOoke_`>oD>oJ4$(N!SmtRn$2!BuEe zTfY5D2$<$j>4#IIzrV_-XFxprMU5fNPpEt?q?r??rTJcQmP>x3^w3~FZm;&RrqBW~ z`4L~0Y_)iX!MTf_2HX%xQd4i4E$pZr3S#0Q!y3`eRukc`0`a^)04tKG>1Ai0b1G9k zx8)vpIaeQXy=8V#yf*yLB0fbm-&xN-HO?+a&(A#CAukC*(xz`Zp322i_*fXH^Q$3L z57{N+zA?l_-NPocx~yPRlGVbf;w1x+1dHlHhI`%7#Hql|QdZKzDtMf&IBM?N6|$`2 zS}Ekk?bW3Ia)`BRG9<6_M-x+5ReSwBTir5>Nad;2eq=W$X84JI< z&sjxwCEJ@>Z0(9T!d0jO;3@(JQ~yfK{-IBMXNQmz29+82JIO2R{5&rg^!7%jQZ{V! zg9HG#Rn|jm{iRd2&*e#7kRfDbhsSkKZ!h-~$%#PP$EN3cd+Vnre}p6^=EE5kJ%K)j zic;n=JynDu$%FQ+^z4)*xd@=cu?eAnkPz(fPI169yYF0ktddVdTdQ$sTLygDRy~7@ z-U=jgm>Lk;xMk{fnqlXaPp)cWALpHgMb>xFkkee{L2m35mlwkom$4hrlyMO zUj9zvLoKJ5vL#FAZ5_?2(U$V1d1+^m*U$Ow>^J^X%->Y?Gg=H-<$Sx{KkgPd7E%wT zFA$OrW`L#{K(j~P^e3ecWA_Nf2Rbaj=vc}Xy55ey{;EyG!woyhR9!CDBJrmFI*eDw zNi)rTqt}r7eRNm8qv6_j>F>|1VI?`9W`c!w_1a8TThl*;9nTvBJHVVh&f zTyQZ@VF~YaxfCG?tA&MZz+XLqBcD%g`1-|Tok|Y@yihB(l5`5FKV7H=oCNbb zo2T(hYX>&n9;y_=WBOoemPxg%WV9@9j-{8b`#)0X`Ov;DKVm&U5tvL@nB6>TPgIt8 zg=A^WYNZ_4GA=gpC;V<`34`>s=2SE%N@-yu`wzPSculnJ*0pX;`xeD$MkE@Kab1pG zI;lpVhrXUHGS@QL;uCAERu_H^Ug}q;d1~g`RK8+zy3&&pXniy~?=)vju(r>{uj~cu zWbPd3xTe6n+rJ#ofp^M2W0N+>C&luqR`+LqAl54}@CkeV*pR*1Fsw93m2PyX9wSov z-5VY&yi{~~AZBDT5I2!H7f{~#8RaQg2}H5Wa3) zGJfxUmO8v$W>FyyC8U3}@Rq9(3IDLi z(N*ymv6F&_^iR5CTKhbs?xlm7v_i|hkreH@HbB(-GMKCvO!?oEO()l1X8L9pZx%|5 z73YZaF7SynV2u*oG{`p7e6K1A-MUql&XsO9yB<_V$B9?6ry~&=PKm?$UB}vvY-)K# zmZxjC=$%hS7hFy}gOB1XG1=K(5P=>w9R>3Wv0Yu?bUup0&c7ApmLPA3uRDye57WqK z5xslee;{;x@wZgI5hzI6ZY%1YwZPidXg@@Ul}A>!o!^r3FS5e!KO8i>*zZ@fIyobq zRk8P-5l1K;V+drZNh~AcF2i*PD!|n* zt0@e7cobn&nan?kxe6Huo`Pk9da>~Rp6r!vF~a-RWwRT5?vFJ*&4TH%?e+Z$$J^&? zZPttZw`dpzVw|d^i zib*a{B5DQbB^rQ|=ZB20Td+WOtZ}W~G`PK7O)cn|_QT;?tM&TT4^6TWzuHkjW_oM; zm$MpsE#v1ED}RR--IOV2E1Tjck6`W-c30PvJW$xLhzp)Mj{2mlr9-!;%d)#K-_aV^ zt`BXUm+kFtXN?V3Mujnwmc5&qU)IL@*D-p8>aHT}%pL!{|~ z9w4fZdd%4>VE7!b7Hpsj>+plZLSi5Oz{8ahz93KXL1(!U~naAy#7zQ5eT(Tqc*?a53 zVDg%UtbG5hP33BS5mRs*R90~qUDBRoTQB_EVqd5vYyD38dElvh#a<&d3$fzqTf6s* zlKfMj%<5AQHsq8m!}acdn9I-3Lf(68A2P=^)l<@*mvD>frjvB|ouhoNCes}pvHq$* zeR`Z7u{{Mqy zZ3bn#z3{3=*`R6P%GsriwV~7}KzT)Hnk*f9{hE-PkbtX7d*CY`0I+JO-7nH{j` z_rya|Ut8F9_CwsI5^g_uOSXd5tiEU}9jDsqRPnm%;kk*X%`udIWHLv|#D2Oy<}Nj( zlQICR*_{;8s_B}m(h?UWsC+~_>|vb4OE(-=xu1t2s}1(aC5jkoEY1jbqj&|yGG|N~ zMUDo9^T?AI;KfnD(WP`cjoSVvp;bW)QpAX~jOy2qc!^7)?K8VHbFCDcW_53{|Ju$Q zSWj|M*d!#eY}9{zDnfPn8`d>mOQo`&b{XbP%a`B8?vu`lJAZ;4jx$d=J`bz?u`dwz zuhAouT?z`i1?+R-!*kM@&3O{Xf7|UpOG&x#x*bIU+qWm_e=G23e37;JMN(9ygJ+(X7W8qvvQ?VqqNEEc+Dry&`^6&!t6ClBB}5-{K?{G5tSS#Mj! z6yLSdNjb({06M&|NE-CVNLY6nL(?^M}8I z1)_?Zt;aksX{=1vT)tgpI~nfm5J+Ah<-b8ko1p+|)wd$4r0 zojj|MSHRqpG_+tSy7Bkh6PWd`%R-CR+Z}dFd;_ZM7XkpWt#lb8y?@#%*W<1IvfKQOjX*9cRP4?vE66)**3e)t?O& z7z`Og{1{;PTEe%t&#KITYfjSSUkJsbT`_le=Y^i2)vALB91iuwuZHmBcJ}l&OihgXEK+Cs(>@B#< z@6G3umfj5{Ko48WcdU4DVcs{W#tYI;gXD=YB?qzIoht_T3RJW8^HjIZ#E6!|FVs7K zQfw~zE0|nysK!LeG2!pUc`<`T@u5?n4@O@g1C@Zp?sEWqISRS@Kh}r8(*4JzeV~A< zf+a4S?5|cMVSQ55DR6rKDvKBTXWOjFuG#_cV~6LHp8u9LRJ7;P(8fYb4)y=q=WIzVlxC02Bw zjc%Z}641d(K&^}z3rYZJhilD``YS2F|Bt=5463Sq!$&0)kOmc{1q6|j?og1F7U}Np zW)mVHl7dQyAl=;|jYz{LHr=pk*wiM@+W3aPzxmIZGjnFn`QXg{po_Jh^~8N&_jSkf zER5aBINiNe?l?f`d-972D7GKbO=P{>wDT9R4ba_0TYDdwpm zBGEb@2#GRKhq(1JB8LTT;89L6_D0_zW`(i9w#(Ag@$hkiH6R~WA*=eHXcS(>N88gR zQ~Sl9P8dk28uWU{_L+y6Kv%t$EyO5OP~EnEWSI@bxFInc5EOkA_$dO{a)3@5*$D*o z+(}7m1OF0@pV!+kBb(bTpGN$4ajE16h88(mP~pSB<>>n6J)ng>;vc_Dm^&jNVV&Q; zSpM~%pHGO?11;3wI{5t}Iq#{Y; z=_vD_8c*9#(DMkW!dxCCqofu^pqLo|ietWSZvrb3fei3ZaOyMvS4v7z5!31N=u2X$ zrKL&u^U>h&6SZNF%O|YZ`U)iSn&eDiWo_D zIaDf2J(jg*fOl3PZxUAA`+<<1MgX)<3Cuf!e|>cyAO*Y>&u{%ETmScW&XwLEqO#}p zI3xpJ+tmoj*HN!IK4K~Uu@q(>fU7{M1mIQta`pFn{ca&AN>5xb1keEtRLMDl)Z+g< zAOVcnEA%$#Iils=*S^&DGl9u|2)U=n08qG1?BTENi%=dTL?Hr6@ZX*w{-s3l_+`$W zfWLY|X?t^}KP9CK)Fal}5&9rH*dm7zXx$Eg?Y`irgHk_RjKb9N+^TrO7<%LbRZ&s# zSo$ClC0cwBxba=JNV)DhHMu}w(Dh`BJTCS;wwXZfl-nbEZVng^f8%e+2XtCQLO45% zRk$$$$FkOhO+xB|`kX(gS1*v3`d~209 zTxs1}RGk(7l5>TCR(%il_P|BETF4u22Rbi3Ikig=TW)c#^s4p-^kFZ79RV6{^diWs z#^Vn-kZo?iwOyFn6l@Tuyg=TA0|)1^DK31zeC?=e`0UxUZQ?9r;ANEZz=ZG9;5nfn zp~l~PcO}-iKJ-z9@(l5S>`V(Powqwxz)2g6)@+n@i}m6TySlvFdowT3YtU)L;1K9+ z;YRBCi_xH>S|OW8XPsyoww4;VYI?cz>z;0x)$VQBuI+XDe8mKg1mkwBJ8LwpNUz?iL2#W4=&P4-?_ZpDLLY9%)F{Svyk!OyiVT7oPC>oHACbymHO;#glK2* zz?&+v{&NHVyR?sjw_A;KoP-!HcUs-+w9|}OC(hI^ zUBhv9hG#|$EzOFyX{Cm3a;BdN{`ldPB$S$Uh?NCx`UC~M7;Nm^j;re4k6V{PwYaU5IkZG3kn)xIe>_lAH zmtlN1Wjy4Zm16Tr4O*!RSu9SekTGyPG9zn3QPmCT zM5mlfzmcVIcHg-p^m;Cik;5MG$T|zW9BA=OIBA>Rpp(SznP|1C$kGhlvSwosN<36Q zIEKd`C8(B9)7b4a9#)479GNu^2-NS(-W!$>Mp>n6$J z{q%Nzmk|zCwzcP5+1{kHS;ZpNj9yw-jX5w_&%u2JygdWpE$A`3_%*zBVU8Qoy>wgH zAtYP2xJ^CPSmN-)Sa2jOe|yphLZhi#^?7oqYgE^Uf;%f&3{r-Ln4>pxs~tR$o)3aZ1U{R9agkWP-YiXcXWdDprJge(5CO$c`F_jE8=^A$Tu z$~g^#YS}YllNPSwK^-+!;@TH?5dbm_0Ek>rMBh&?g-2K{F}GD0B!{yfu>KLtZC%H%phB zn_DkAH)Jd!h?tc;U{(sn!@aL(MNB%iB1>s|qAY9W_Q$s-CLy*_(s%DYaRL1h&wJ^9lZaI+?)@7;*7N~`j*b@d z<(ki)Q0ob2W8Yxd6YZ3->Bnm9?TVMtmH|?w#lP{wPrvu5=ZbEO4o2c zm6kele6Lq|FgVNHF2aR=Og+o58m&M^VeyFpf;-r$QEF#p@V^upyM7Ixoi3#SGSLjg zh^{`MXJO~qRwrjwcE2)9SvZVG|81?6Zq`=d7ZK~P+E5N#KdG5X*sy(8Vp=-uU4~gNz7~UF??J1K0{Su!7XzAQXY2a4Q|PX?>|=C!@xBR+3cH^ zhR2nH0Brv8J{Xf#Gw`2wMv7lFr@`tJ`%%?-mo>Ca9P8FG*2cfC6~$k3FN7e^BUO=REwSGx@9E*4K(WFe=o)R+fySP>YjrSE%n*OOKdJb{+H8y_h@q*D{|P~9ZcXPGjA$S5rXW-*i8SC94+O` zPkEE4d^r>qmLFE5&>eKewkq!OSW!{-n}ai#)TGHlb!yj-*c#Q#-Ey5Abz76$#}>9z zi{d?ZV;xqwAwM`D%ZgWz(dfRA1wUwfD3x(#udRoe_+2?luZBaLIV=P!0h;g_gTwjl z6CqZM;Y_jR43k61agUMe(N`&U6^pFy_1nGa4WEuQ?FA3JF(q>HUdC0zE9R$t%w+6Y z9A9lErIr`4FdheE%H_}>4|?w0TAoZGWb^mPV^MkV85=4vV3N{ON*2$9Y)TTk<1>JC ziO}HW+q+~u@+keqKV1QOJX(kD?Je%d9_%Jd}mFyXA z@kVC%ZIr?`Ue4_B^&VXFW+h*0JDtF!XFq3GF_l*$hYyD|XP#umyn9w>D6vUBY`h=k z&YcPsxc4F?Mk71*ri3tHTnOO9^b zp{w#0G^r0Pg~qL8x^LS&DxS-`m^b~N7r`<$03aEBPnQnlV}V6@m3rDO`{fq7&*w9& z=}bYm?9glQV4{#ZKa7-5nuxqol>cZ`Rln}YLRYJy(lda$Hajg-FMaukJnk#6jpt+~ zo=xv_tE}s-WSxIp2Ua*9;$3M>iz)scYw^WI-s?`h(BCyuw(n$%!;}EWwQND|xxP}r z_~b0zK|b!V{HSEn%o$>tx3Ey@+}H$um81{Z>m4az_r^xJ$i6;6e=pk;@vo<9$J@I!wJ-tB)r*JkLy-`&)l82ddGm7#(oSrn zHsjvspo?@9Ss0TyMC#&akW#>(;1!%u!+XEILh&Rsd zcvLxi&hr$oM{TGr7cD}i2VC7H$Fj1rpUf>lYCg3+6CTl{aaP*nblZR&`eg$S;0wW) zP+Y%v=$jK|5|(3yDvFAVuZ4nfXCIp^D*H@YTtttkiq`3lCnU|dErx+bl~Aq`V+IjG z0KHqIL`GNh^T!oZ^E}?hws{9&NrCS)cPs*7P|xwrp#2ID=zp3pVAKe(nX3d$7Gy6S z!QK)7|9KH`7ZWAEnPmTV@z0(AFVB+57szx3%p0iYe!|400{DV=0$cCnNrp57C+?L4 zMXO;X+{{d{J~RUXG&5k6ip5x=cH`*~1*!vW zv1va!lWt?Z92^aYbO3N{jb{(Hrt7$?i5HV&#LbyBatDIqHzcY9Zbn(m8 zwM5Bcic$HMN!)lJ65_9U@z54hpK(b=P8}J8Okq2n*3$BP0`;*#ym5rxgjmicsCs4w zg8E|{1<#aK3svKDGE-c6zu{XE+(u7M$P7@3J|dY1@!7rt7190Y6qP z(rFk0W-^pCSf(>acXF%#Ajh@d+(Qi1crYXr&rYd1nYqS(Q5^Wl z(vuT8Ents~-IEOMnfPvRJBO*R4}1&ns5uNfLMcB0nn{<%UUln}^-t0OC@u{EA5wN| zqYi%GBWA|pab0uruP9;6%jRH*Zm{hGa*$?~O;R8(1$m-{mWs-wICeVRai5j7#D?}v zJ^kpg%ACu_go_RclA}eYAjo~ZSYM;TqXIa6^A3$e+_{ieG}%{?yqlE;-paQ56IL7R z*`g5-z6co?6h_^?)@(o=u#w|VOQnhV#P2d=zFNnf71ZcVa;P`CaIWh?2^O1eMeQT^ zgF>oo?e+*f`HYvhrMI}a;etG#G|Vn}Lpsq@oX(IkPuF5lM#F4{4A;ZWu_9f&kNsfn z1U&IK19i{NVLALN-jV@wg0NSP{I5Yh^25VBRtJ54NY}`W2;F@EvKOtfX!1q5xE!8m zD76=X@@pFpN-pnkpIf{pcN&RcehYuwP}MyF>?iQY3>#-q2!wvUr^7kq#nOLS7JXp} zEhl0vu^z9qfa1RYx+R~vA*+d&t}qyA>OAr27?t_~`#eq-1O^8gmkQH(2Mb#e~@N!bBpqB&{(0mBkFv>U8JVNoELe7#4jC;t3Eul7p>L99vS#g@@ zKZNjupR%C?y-QU`K9`?jEPPDFJXn$*v{4UfxH(qi^lJZDwmyo=!6J5s#QIpz%*XeY>w|lA&^j08%zDB(Y~7gvnj*gP zJ%3mKOD((Mi4B|8Gc0iXT{esL0TC^ z+k$l29viED122x-*ox_|j;*n`+`l$noLmqeuYdV=#>?KA5hBE^C0Lu76^z>t-iI9- zpgr2KZbTccQ}rSHaTAvfpK3#lauNAO?u@%@km}>DTyGTi8Aj~CObL)zp|PWXeyX$? zOLCb)+wM@V*OgA!H(JrkmvE{SCg7P!?zY*lQDqVAeOv~29?nSb-48gs+)5di^2Z&F zh;jHvpqoq=iiidx>=&@eKSRs?i?4fL38hwgE*q0sP`v8@M9!hmnS3slA@a4{6PagvMY%;>>ZJE(zJ4kxdy=u6s#X0SUXEUzk`?el8qu;X5PGY} zaJE3X=v2PSz~~?OoaER;cewQZyWY1W7z6CbBJSFI#iY^I*+A&NW@g9j@WxlsK3uAX z5v39vfNgCy_OodSLY+<#bPfkk)Hus<(z&P*lFdXorfY{Yfe?8`ymx^&h**QgNr&0q z=N_+aK#rHr+aevOlb4LH+*spCd$WE=sUHt2&<7ZWWIbYx`tT%yL0GT zVknSveU%OFE6|Hgx*LHrX+`1unq#wP(Q2GMJK(SCE5|o~aGVYC!`dix!L`^v;0E0q z8vT8fp1U!VO)Ek!owKiR8*SXl18aRK<%Cp5`S-HZ4;Yu5Fnc^U)1UZZ9{+$8L{jvk z%!XhrPb9S;gL|zR98&HvEO$^X zsf~7sQ6w9T_ZL-JQUe0>ok(_Br_ZD7_nf+&>#a&h;>B_}AuAr6mw|3Onga2Ul7%c$L|sTG(N$*m&lzvnlIMWyA_70@Y+FC z?+vA8igVgDk&ZBIMf;lp&)Lwgi^h(;Gx7^{WU0tT3Rrc0w3B?mkfkBTuU5G*>dn9X zhXI1W;kS$D=Y=OJIQadQEdy-B-*x?447YJE(#DHsPrs?1)tR6hHvrvhmI54dx>oV5 zbjC<1x3h}MYwi=n?c-Y`DkTBm1bhIDgCW<<^lJ(uTU;wEkjBN(0@Aode&VQ`t{N>n z6*P6YW1LE|A@^87Yg*1wuv8Ks_JDOy#r{Ua@Mzi!x3dh<;pW$?m#mw7V(-o@P zaMy6lBy}Jc5-37@bYOLu@H0KmMh7J1cr`7=DGib1Jd{<3YEp1;_seJaoXR;on)Qjt zZS^`jp0%S>4pfU|9vyUO8et=r6>wq_pRYgvxJHfqfWYh=J^2(ztH!*X=bTxq6^Ek{ zZ~z#uy{YR_OGW@O#Gyq=CUhRUNC6~v+ZNp-}N`eK)_!!D{!$BS=<$0GE2nm%#aWImHFSc zegGL5Yp$ix$G67g_MlDUZ87_lcMGxmuv5{dDLlOtJ8HQ@0-(DG-eL17x>>$yzqmTD$wJI#Uja00jg{7(l&x>LX;W zzWPTNKcjt!CpqMSzq#vt6mK^7bD~vW&+jpR^)F@^DW*ORu^zkwM8y=EX|)ifJFP9R zMzsMGioUZ|Oq|CbB${dd_i!j30CV{PlOE-H>KBpN`mMGgzwLqX*a_8>>NyY#{^Gum254~B{lRF{5f`u6)ym6uy_#6)tL3O>y?Eys9#kF~h1o|NUI2P*>AM(*io71Cb z`p9Eh@)Xun)r!%yvO~b;qnyEXi9F>jxq|1AQsa<&%v#y2$)0j3XgD9O{ZR{5zFKX5 z5aBy^j2OR)N4l{uOG#+Ev8h;TGhJ)GJNNC`n+mf*s@?={dHB(m<>>C# zdMt1%`m+WuzcPS30@j$a2BGy!Or?l8lL+M#{FA)5+!msbIvMpeffYy5W~MXGh*`j=wF$QIW+t*4cimd>qdS{^^}+#~e7 z(?{-H27_p3X4(l9Y&mA0Ni?7@J*S*vaTw&X{uy%+rzF6b0yg!Q1Fy{2zUaFQGS7P1 zsE(b2Q+`*v{Cwux>(@NLL#xj90aJTntjb7;1n##*1b3H78@5Y$x;^oZ#G3Qab~`E) zi*ReT*V=#o8t82>0ACBfNO5&P@t#Qp>Qew*Up9L;Sp&02%x$CfJj$xxPk!7Elc+SM z3NO5uifLfPn|%EnI}b2<&B}g~GikQ;7d3!LaMS?}&>=hP>JBR`l+AG;7L_{LPey_|?;eX6Dm z*yHTq$@QV9t<5_bLuJEBJN43g`^;@k7@@Bs!^j^b=Qi=2Q}BVYShU z%nvep8uidh!w`vs8CpFTifrL_ma2oJu$eO$w8Es9IP5;_a|tr%S9UkM&mf$uB^Qdj zRWlwkMNOBro1?Hz73Qsox26k+KaAk+j%P2`Q5}F%6JgK6l$V>UHKat=Kbem_u#{Ry z)n*t-+&4GZqmCr%RSPukdeQai1PqaXDC^N=pTLz3C*f6+AhmyM@*@_XCJHEuSaMnc zrC^($q?w(V4gT*YE4H>*6?*=Aq+U=g2s_m zw%4D4jkG%8`Enx7V=GK_q&BCA)XqXr<=~(?)eGPWVPKzgpwz-G#o z5)0E=M&>0OIAtMFxA(h$_}O59T}tsW7cZp7(bVqChu!bdCDcYt=kr?|>9((jzqm{ChqC|`^bQc9)ZlY&mj4RO10F4$1eVk4Rr&)cvvS}Z@R`@mJNTMq?+Ry!c& zKRnU7Z;aDTy(4T80}ynG9xo1+Iq9)CSS8I+0(aEC%7>ooTwh`>v`KEn)s&GVLbxcV zQJLEvQtusb?}xYau+5d96$Za-?Iqe7tdu(=&Dz81y!*_inyNCs$(^d1q)`AvtkEUi zDt4vuIC&zXY9q^#!D;N=YwPjFPw;P+2k3Kk^mfceJC$9XJ~Wc6MuNXTbsuxOd@DsSV#s|&(->p2T#i9 zonH~{A1qMy(MTZ%<%(miXGPiZ{uYspWJM}`9>=Po%D}8#bFtgt@q`76mykD^Q!xMB zQ&=xnNNWEcOVkHQn~_kmHTmZ&NK89c@i;wwU_+3=HG@~jip(y(^!8yw6_20lJ$zTg=Wezuj5Beo+P6Ts*d%S{px87p~S` z1vylcYt-^qHlI)b<;p#2_TIEuTI0S(ua7{}X{6I8VFgM}r#lP=!bndKfzL-yP1Ih3 zQ`#)lysKyh8%r}QTZU%%PB-m6=GJ>P%B=jn`Svo$Ya2LUys~2UFvwaMC-c#ykIYfd z*KmCC9c%@W#^LIZ60wK1zZ;JzLrKoL5a4gfx_hnPRv32p(Na~g>; zB#1AfR> zZah03AiI5v$A)lM{%Pm`bSLx{AEMMsqz6?4eo+OsnJv{R`-k_qL(5KQgV@erWBHq9+}Ab3#c**$Wv-cKZm^5Y=dzS4u`p{O zAXk|Jf9ic*6nH|57mUg*^f7Yp;O|-hv!h{Y&-b4ic>HD8G(0~9p47$_-7U`Qo!Akc zfEx+VycDqLW#f&p5MY}?+YtZ970{rP*z>Bs7{J?LEyLUeRa6B7) zBj{i#|E-LuVC`RLDpv*9ZPWj;5&S3 zrx8Voo2p$s_cG48fgCpQi9y{_%DFF9^TRovzO*4#(Z zBLYE3PEv5{_Po~xL)G?+Z}K)Ls71V3nAzpYJf+SS#luJNB}l(KU^hX{QU<<$!_Grs zs!2m0XK$Mi&RiHAcVWB^wO`wQI~jx%=2mVxUF%FN45>`$RW6_9JqnfYa!j zRhcJy=n?M&8|D%9f3P_YjA}@9*rpkrX8xMxvmx?P_1rx0{?T z4DuZ_)lu~suo|O?W))Sloq~#ncfl1^tmqL=1QF%A+&b#-_sr^%!M}v1X%vo2{g`0_ z&vaYcdJ7k_MUhjTSaOAuhF+7{Qg9JAF&^(_kJO{luKBs|1Wn7h>B7Fr#Je5bDae0W zUEA04#PQ=`Vs?VCGT~lVO85}r-($Vu_xZNi6TdQaE=Ba{fZfIn9;+BN%9-)ck}IUT zTmpJq}xwaY%+N^6)e2idNnv0r90$r_t{l5zf0W7gv@!%bJfLc*{ZX6;$y z+}H8W94L7HIhDJrlmuA{T=yDxofFq;c8iM@mQD2C^`-n(CUhb-$E+egAN|Aonr>3LqB766sGn|Yg*ENt2p)~2@Kq^i z%}Ix;$|dJ*jgl33T|JWJ@@Sk^rct%p_I0|wUGCIt46UxDQ{vDL0u=f{YqA?a6?E0*Sf3gTbn1TTy`WhJHBP%NWW0v5=oZ9uw_Oq$7eyFOl?NDMJ z%h->M71^s5Rp&iL({(tA7J90xGgw3$W6^Tjx#ky>`!bDHV)m*##b0d4pF4SQgxApt zVylDO=m`79Aa7YKCGO!Ieuy-ZX%<~r=mJOV`W&DzjqrM0dg>0?``=m*CD{Q3HPPC%{QPI7{22j0BNhjq zE(}-uR*c!hMC&NgEe(4?IYR|0gUtfnvr%z$nq&E<7VMZ;Te!lknlFcjm2F0(TIGhq zhGzz3O}bw@T26r)T{vSV@27%y)q-^Xqg)I37U^tqFtNh1*?IFF!DYF8RCAlwF zOp=wARYYYJc0;DUvpbfPwmO`%&Ur(1EEmtI`)NU#hzf#N9 zPkBJ(DX>jS_U&O(?2DGB0KOGQ&)XZQ7jxYilR7o(EV3z9;ietHF+5WZl`UVFa|!oH z8D<7u*i*`_tUq1vcKJ(=2A&{=H&?u8`4qNwbKPIYbcEhZ(*6q{E=g9?`3{`#6f?^b z_|8F|#O&GIOl=3Z-PBonQ}gW1jT3q7XzW*4iyg5|!_Lr}&dwy_`;hP^=bJcZZM_~I zLrO_k0m`!Pt+Kv+n;j}$+74jQWnDJdlO|8;t!*KF*w8&P>po{O?V`1>b}Q`QdSmcU zi|F_IcDa$B_x}UDmzho1;Cgo(VDIK&bGa9rnel>5_a~ zkSclTSkYJrOQTugkz2I1^c0_f3J@s)0??{kJ+-mGIh`AI*e{KZGcx6pauw6XbAV!$ zXZib&$RWaKB9NndIWjx`#54^#wcI*|(vaTyDgr`w_}dEQMPox~*u4NIe%SSVXAx%{WdsQg*5nEnq3F@SbMK#>K@k}vx zw`W~xwYpn2(eHdF2f~IE<_v@dBP*wI*$vLlpUFociJ|ds(xVM~4gpV?3hFR9b-3&) z*h)B37C!{3hW?XLkp#@m?z1!k z9Huf`BjA96JTY6dXwm>Dv$r)n7G@+f5OPivIRQ3`qNh0Xpi(!ZM(*-|)ilx^VfXb* zi!H~P?-CJ>(b(%R+`GEPJ)EsrG^-I<=#mev_a=}KC_QGBd_+D0#b)|9B4eZk82LmH ziYBm+5QmJ79rGu^;4uDYa5tYYGGc|-Vv`H-NYdP6()bFT+T499P6}*|+#IYL8d6fXO=zB= zPUgBbFDCFjcyo&TZp7x{o7aDX4-zUHlL9=Pf0)U*+S_xfQ>VV|GO}Ej@$7h~h>YLG z4EX$QqIjH%r=@k%BDln`a}GTVW&@Oy^$v1FNcSY!J)$<0f+eDQ)vq^2Trb;PBqFhA zX*1h3DV8P^!wei;iW%OxHEZjGoqz}y=Izg& ze`e`#!22U1f3)LY;`;{~{vg92WB|C*AG`U7GyJOvf0)%DR{6IB^#>XLAj2PIK$yrs zsQ3pJ|DfXkL#`NbI&%e7y{>o?thO!KGPSk4*{d!vaneRbEJ<3xCa$Kgg|x~Fr|M+PXoxu(DW7?g6Lc-zCHF#LrG zs@ShTy=Ula7*lWbzz?Y?k$?LQ@E~E^g|Uy|{B{+%shAR#qnQcagpBI<2Pl!l2nTMA z@rZ8yrzJ{c%;zE~*Ds;>!+;8S|EQJIwqlE1+19Le`(7K7#BmXk-YraPP4`QK15f=v z`(PS_$z19WN?}`Gh| z+h`gUT5LCF3=5YoLtHdZ58X+iJpu~P@bQrT{hf%RGu8%SWt7=YyytJ-tvs?P;k9e- zII^m$OcyRwdSlyCJL5Lt5s{RGZ_)tcw9!-mUv4vik2X=j#~p{{5Znd>vK`#J`M{^A z&bG_DHNoRcvfPhiK)X>DO^1G;7%rDqZAu*?W^IwSAidvvR_3p`%~l$dE|9vm;#zl* zqlOfJTZpIr%>w7Nf{US`4HR z*x3MGvf`D&NFi{UI)2NnqzDJ98 zB$9j2o;{}!FkGg-GD`YnSPFNsq%Pw~7MhSrQKE7OpOH^mp?F4AAE0D497Dd-4JrqG z3$az(Vc*m*gEcM3>I#@&97nI4K>1x07HqNOUbayT!iSOCyiQ%>Hcj-e!Zp^1e8b53OhoCz zCr*yi!Or~=`GQ8J(B4TQ9t&%t!dE_$8JJgw87W$l7s1B`$H@}CE<06Uj>93lmPHez z@^wv*NYqTnz#zWk9HsSDlj#1Ps*)}JI?!>zw^gmD3us?V^L@5xp&sk^NZjGo*klmf zXkmA%w&b$#-D1|F9gEg7;=HX5qSqRb?N#dsvvdyIP5GwB&+00d52SW7bjd4@BzDS- zi7Ib?MzcD%q(7KBW_^)da<^(qKdGS~l5s3I{%Mt4W31A%fTW5I-(d|jYfdujGalF? zBU89}MV*j8Wx)I6MaJ~8dcUQm)sljq>sava!O7TdznYzdDF-6*q@;?=y63iNJLU78 zC$1lE!qYB4GlAVbvb1?!rkKg9A(O66AFZ-*|5ZvrLCrXk3wWA8q0nee41w}M=kpjO zp68aYCy%pX*xumR^&V_FNm>W)3DttJmcq7%BwXVs7WIB<{o>>^#;ROXR%5rk+Y2B0 zz+r|^bVo@S&{4@}AqXbQ_tCGZPE_?7cIEvY+_sf_Bw4qL^E6$@JNdUCSNlC}9$($u zA4ZFc@3Wre3MIP?1oCxpZ5_D6*3?x6CBd3ilLL*bqN8PC(1Jk{$aJ=UT=nt^O}NH! zf}8Y%?d{n{qO(aG>ZUTjJsCH%D#s@66S(d8TA(b~Ij(1POrg_7CmPsgzt?Ckz8YGU zPr9-i%yMb7b|rTI4Rat-59v!s_%UP`4C5+Uc}+51J3;&8T~wB@tDr5#6wjFD8<(N>R?x+)NqV9ak2)E#%geo)ybi-AbT;0nitnQ4o0#3t2e)gEVObXvDa^ zy3wX#Kz`2ap!hEeS)?BD%2-O9!UR7hwQp2@Ks$aLKMlT`<8D=zMzcPQ7?amk zHukkUGr>KKJtDd!-rHSoKJ;4VGl;RpR3272Bws3p3WmJ|g`4932-{5X;&krEwQ^cb zt=JkjyO79qySo$8lp~-|7Vd1`by3AJTEX~>Ci-Q_Hup0Z)6bY#%^Z5++SNa>n33FM z7s}iAg1&%y!eX5h>&!Cd9l;mrDBbbFv*;0eEiuPKbgb|K=#-sXp5Fa%q01LhEZ88U zt*r2g{h-#bcN)pZxI&Q(O$2Xo!5?GMcY0eTnaWMG2 zJW^$lkIK~19N&u`D>#O^GRPlArDF=!ZhapP%DNP+KD=P;XgYvS9`tvE%9HrbLGnRO zb(p&Lq?+7#POoQgb}oIT<(>+ttElvsXa(!XI^j-5HK}-V2-JA3hJF(7SMQ&pYY9=m zWxd%mF9p%7Ewt>J)#&do^ILua6*!e!b1sjE)|+O*8Xdn+_9ayqON6UQoa7pRn9EU3 zhcD#is3!Bp3aD?^n--rLd};xWU7GA)Q8`^0>VY;wnLICe;Ukr%qTJ_xM9u|?ziJ-= zEnYvzVb1E!UN0;=tJqp_hvLpyn|E!0(2mAfxOJt$G*hL+R_(6S)}y+!7X3O0hQ`t{ z>vY_OotPu_+1d)Q>v@{2*SvgGQwVgja!{zkUenF5Yum0%QB&w-49v?~He=P?(Fm)a zV2IGTItv4XRxG(LPqwz@)5P-~I~%|hN4gJmmIhg?rwh;9V}@p0OdABB?;1OuaS#s#Z)% zozi6fTh@A8Okf1ez(StlP#w?AH=paN)eYVPV+Y1Gdi75}r8kkR$>SFDY=y%8E!=bk zCZJ_K@EJ@N?FU#auOE~zXSFP;mG6k0Jb_yJT`~BunOrTLDUL2Cr_n&KOYyHd3;0 zh#owAecSV8pkV3Owgbm~b<2&23{VgTOqU!!89zeV=Kwt9EpQy|c{ua=gMyIX>8?b z`Xl0CwWp6qsm6UpwU}V;oK|o7ig4^ljK-XgCo1fgrMqNbo0OH`LcweFh?U-#;Uimn z0Gpq~V~~fmvY?*|;RFpY_QEoc1r2vX8%;;ldD2byx?tKJQCN*RE@Anm>A@U1x56Cx+oSdL|Pn0uFtn_PLmg zp)*z&YQ17P6ozH@0xk8+L||Qgf>C1a8tF1IrGiewOraO2r9TeI?AfRMw+6p>A2Eg6bQ2+wTinkTmA|2RtrvXsdxcF8HKUNewJ zmJSeOe_9r?ior(RR#V#Bs}WLe6qC zGR;7oW1B?^9bxT4IO15kMMgM$l@Az#s+tAx_PvxJ%^Gx9X;9&iz)wjH-=*I|hUkX6 z|4)ww;!)41d~xy|Mcc)(Y(tF_ZT-HAlXA^I>8_5jFBsF8a+aUeX$`cK-N;CJ$0-}n z+Wh4qmiUXPQ713Q#=x56*33P5v~Rv0JO;ZpIF=3ADXLHNM9Hm!e}PQEIT5iW+;v3aTP9Wb%8Gj;aL%)G z{NB-<$%;j2b+I@uWD)x`0EP4tiT60d9qvDXg~qVPsNeddHS4KF7|#}Cn1G0bnt$(s zA}&RXz_AFnf%_XibkCQ9p!dJ}J-+DWR7jVXeKRMXO=G0Z3avZ_q43x$kl><@=`y~5 zYIqChp<%DahWTllPa8=<0LoN((#rPkt@Gx9>2bS6Qykx#TULYl9*xK|D z_Ibey)O7z@ZZlbA??92DnN_WMP7@@Zcf*01{T>}&0v~&M(jNy_96aeIo*RFB>)|-* zyZSBLxAsN)i^x1UmWMSI4#hc(obQwsfJkpb>V%$H!DR5iJ|P z^Q8y{7sw*TKaA%s*TK7XOSM%_D;72RFI&e(HgdJRe7PWk&_wu8~ z6#GIQTIh5w>>yIs!i+6vGI4@dn zA{!s~{giKoc*ya=+yLpVFI0P+CD;_mWRTEy`y1_X1KyIDHdKuilLOTX5f^L9K?*8( z(Z519@b7Xiq&|$zp?=&Sz_!Xz(SsIZidFCNl*+Le_A99m)wmNzl-R8!JZ|w=ZKIKq zuNaOC6omt`gmVALcZ;QsH~*nL1t(r%Kri3;CR#jv=%}XpUZdE5M&OKbqJBf$gTlqD zz4d`thZmD!$q{F9To88mu(`_<`4r3Q@V#+UufRf6--MECO5a=OyJ8eFdI#@89Y}#t zeE*#Q6cRMH5z1TopR>p!=d^ zs6ub~V2AX-!5!7Wd(`vu=1U%#JLWisBiR9Dx>MAJhV_zV6lNoe)wdcW*mYxUIsina zBwpNoTYr2}ytG(sk92RWCGZ4^DeP-XwkXb33m*qql)BH+V0KlF@cX0Ru#gft!~0Uj!PC%#!Wpgsm0JQmLVQ z3E!gOjfpV9vNQXR`@){$hcY#80?`e9P(JU+fLAK_TQ%NMbeV}BFxqy)4jTfQ{#VTs zQL+agS)G+1aG2n%>@o>Wl1^shM_6}M-->^p5WlC^|2YC`dIH0-tYAYyklBgQy(x=OQ$=<_h5iSd2`! zvq^7k1H3lMk(?NB2YHHgva!xa{UZbWJQ4S_K`lJNlxr>2m4p!XJVZvUIRhfcGp|+dsZV<--FY zTC2yIINdcKP+dm0Z}+w zXcy$|de|>`9{0`>+X~%_(z{)cn;^sy^mGJJF&=1+x_lB*#6h-y z8()}Q`+C3B7)SGReHRT>gaaD%kgI<(pVTH1<^G0(C`J60B=^GQg8I8b9Fx2E7w|Tb zzU)|2$h<#%_#d6$N98e9NY|f?Wua6TGI&8W=D^c4JjKuZ*igRX%c4d~-eg66Gip00 zw%w?978b_`PM*{Imesd~ZrG(7kjC4a;iyc7w32S%`QvUu*F-y4&jdwlYndzOWqu1J zi=b+x-0)t_YIFG<5!+P!S!m^Ep$&9<^6^{c!eWm`sp$h&5nB zV_tcXb?Y&XD{1ZAA_gg#Z55RKt>KINO~-gy3ch=V5sUl(HC90)GmP_##p}aILff~5 z(EhJ3tUj9QHI5@EDPxs1qnMN&rO=qSImO)LO3qSQn)eJdh2`92dXwd4-b%>EL_&n} zmJVy(nU`a17$fd&CPq`5(VCas_22b-{{5ck`#jI*^Zk6!=lM1tqubYICv~-*kOxh! zHBgVhbz<}b%iV|&Qq^Ey>y!_;9>LO0)_IBNNVOr$Oq`o=r5)L5`h^SD^uy-OFRV?<~-PA`v5|u zz+9**x})b=vuv}N<=6Y=I4$TN$tj1G-t`M^`2fyq_6ip_W9gJc5Ec1l-Y1-0Sn~(b z2w%IhXASAw=r2$ykm_1Wj8Bn2q=JTC4EV7iqu*;DO=?KiQ~Xv@wsGJ|GKk8DGs9@&ufdxtZ{Vv=;g9jIb6G_C(;;4iYq_`MH13f_g%r>x9I_ao~eE#U>)L z9|4bRvcTcIIU^OG!J?Wd)pXC(lP1^A<|&4FrFWR-W9b(kKe0%MX-oxF+YNJH2ES?o z;2{C`Km$aD^2o%m(UbZlqrRo21G3wh++i}g!E%KbxHxP_;LYttEPNn~PHWol#1~ff z$5#bY;MjsE(++%*$geJ#hHUyIm|(aA^u-h%Vk%UM6RC{sLGp{Q5{Rs*IhGfqX z<#5NBY<#b}DNQVUqRdL$qj9`llRum#FXwi=wG&}k5cxB1GY>f%9e4;}W`d+(q0`;0 zj(*3WW220NZHUDU#3E5@fBVxIF530hxxib2rxG&Jz(12yhAj7t0Y68nZro|Hv3LmkDH}$k( zsYZqA3$=zJ6z&VzfXLx9>^0rJ^3Ldao1_#cK+2RO%&D5W$+u)Ad=xiM37bcBIYTOS zK)o52y>0EOrkBTQ@9)(Ro>cP?56j28?jyw4^9q;$HM~oVORTjAr?oKYmjcu8n^EqnV>9Y?UoBw%f7= zHh`(PNlcQGciL~>eUi`Q`|HZuZYJfsi0jXV*z}OvJJr`j?(57v@tOgyBRjZWIdK|I zFj)ECW<=T%b^iKlIM&hG!h36pmhRi3yK&A)E{>8BYJ2+>2nmTZ!EyBwIZcD+$#kZ4 zc{{!HVymXR)7cS8X#Gu)oPJy^xtalR^vHWtPNLRG4V<|w#hX?&R`wff{OT+eNf zbV-HjtznZ90%JWvTyg!BUnGF~3XjrJ1yhhf<-ZB(VN1uvs|kZ%chtHqca?NLd%)V? zCkx?(kBDc|@onw^qYxAcPSvO#lk0xzpBc4V>ouU#T2-|*IM$tq4--s>nze$P`MSls z519LI#a`%Ooa1-_CBNk9AK(?>WFNvH+YylU+YD7lPWBw`Xh6CO9BN}DJ65n}fR-Dx z0X}NjWPPo%igC1n0H-G#B>Ly5*4@GsevaUlMOD{S;PONB^tS$gF=gtw13hX5e)ysv z-s=1%B8I1$1seJ3mNmo6)QZZiU2*OKY>7xxgM<9-ThW4#DK|xWaz&a}3?t26i+J0f z0E)2MtpL!Np#B9qB=SP0J?oc$Pt%EE=#P0p=0wM50QHi}r0pOLZM!mgqYo4loBSQl z4@0BRZbhf`sk&b@rte)V%8D5VFWEO-T7W`XZD9@bQC*J}bV=ep_YNw=cSMe)Z7s`G zW{4@T1wy^V1>Do5L02>4?v-?x_QD%WjwmO w{Vhrn>N5;D#WPnKsQBq4a0Wd8*q>^fIxLwV3T8d>T5`qU9Ah<(thu{z-xVyUz9&~^ZJU9e*8$$3fK?Zl%!F36F zfA!zmZ~J9yse)o=?(N(CSf6vAo+uS18H`t?ui)U|Fyv$<)!^XZo1Xr!K|y-@+fZ9F z1_wu^@>xPcMNUG3TE*GH;LYN`35oAKJi`h>+pG85b+Qi%iLQqi{;;(w;3iq zLJ0i)g_wLl{wpFiHHRQX+$d&pbTJ4|0KPg9?pPFmInv&wJJZ5Kru)&`4)|hQg`d`a zdoO_JHkUx-kkZ5+PSm0r`bTJ(6%Kp}Cu-IFG9vs%;C%Rogz8E+hxB=OIspHWI<^?I zX4;|6Khhw;gnKs)_$3SgXC)2ih)Bx`L4$i|s545kv-$FtW)dDwf@1p+4+RcL5&LJp zE$R@CW1}1J4IW-BqKOO~T=}>;u(!mKxP23^Ogphhb$8p@#j_Ib=Gzl|A2reGe`iDp z|A2FRd*i0s%Rn>!IAdbFz2Y;NU1EkVqPyZFGV`cCY)lq8OE(V1O{FlM5S=zF3NYgt zQxQTV?scQ7TXw9FK=0)G$;CH6yzAiQ8{2rnNsMRg)gY68NF~zWA(`Ksp4fXDK8}KB zLk#O_qGS23Mg%^N3>F4^>dijb!A2G&wjB5oR(A3&ujY`%4)E+fX9!uzUF}b}5IFFGjsS!eZ%&D~;$_9=>kOz6g*# z^Zx@2-n;jR2X$dI0I!NimMWZj>>f^bUd)@^$tZ=+@j)mq*oJ3c?-aZv}LyVf_=Wh_zx7A9h+d=WwmQ^Btf@f6Y z%On{@_!YKm7&cgst$S3g)z{_+u(6}ZZTMraW@znAF*01J4=8jC9u6wjJ&`ADxVQq! zJRUyB-rz=e#Ut8CNli%-)OhS{#+)u+%3i3xswWgX3wcc9H$)UwqR81Adt^XkL;k8n z2;k$Xa zDz70}7!nS7x>h7NukIzOaS#z%gE6|}6GY$8a^rwenEOyeiD(gVLS&`&#n)**;51^7 zL@M>U^bwmP)dbH-BG5A>Q4WUTOT4A6Pb`u}E_nS8pCn#EVv|-r(d{ST6T34ae~7-+ zgQ$rL_Zy`YVnHPgm8mzp8Ypim-QYC?zl-zax2V#U=tACGQz?d9NX2~pG7)Yi@Z)LH z*}*{qTfE4O0CK#$tKCD$^4dhCsix<;lnS*?~>L^yAs}+-0^2@ zpQ(0OcCZk5#L~YiI?_vGv*El&r3h^d#d!Dbo&P(GcgVGlwep|-d{X|om}r+gnGlmq zmeiX3I)NyOH@TDcQ6Z>!Ie)ys@mplx&qAvL;sTw*KJ`;|Yjs?vH6}EsBlV7=`GRkG zN#EWTzWUlCswweDxn2@jxLG_^=w7T;#Fp;c{E*&&W`VAS#G777q@AW+#1F~u#XaA>G73HQD|GMqE^7Q=FZ;NQTaYK2-VZ{jdDH!l0aY_i%aq00ih|qCZ2*?R~P?%m_ zqZ;6m;!2|oq57Z^y~2v7mRy(em8^_HkNGC`Me>D|yp&N4P9JwaZNGKDMgLBJeDv$6 z#>jxw9xY zERWcCo8@)pc4l-gbvAJJIem4Scj|UJ^s4O@+bgM8RRo_2M)29+TrlN*`H_N~LizSy zB~=?!+g`;`9Y_5{y;N2AJ*{Kkn(TEVzoxzBH|wa~SkmImn2$Bk*!OAgRogZ0Ly+Rb zTfvGzDMcDZqY=H#+y zIi@hiz^+-vQf2PocBFr#NoALdkjvhI)WPf9d7E*gc|&nEce8}r^|A?Z9;*QJ3~e9N z6ze?+H#rL~2v-pA8+j65Eu}TNHy8RV0h}pPB{V8bBS{o#5HKC65yKKYA6FY?Ehy*q z?sz@MYGoTX5yR=tNl;Uw(>PPfSJ~9pG^?Ij{9!fEbNZ?hF(-6A^m_89xC~bg_Z}BH zi9Y#Vaz}QJ&}8axs_%QR!}5n&DE?{6c*=C?+fv@qywPirkC)-5@5A*y_vH`Eour-S zomQfGHo?|6Zk$J}-3(*$>|EdkZMjNm{p>-3%<0UrtN{Li#;#W5a+R`UB^;ZH>u*QX^HuFFl}_!4NOQn5GLaa+ z=%tkHH14$1w9QnLU$jGnzwCbbFyk|ScX+p?(Alg_qQkFluKLHILdC$K_hYhZObM{W zpku?+X1ihZVCsEMOOn8u$M2)yRvZtJKdq2>USeKXp0|Lhg|${~h~#9-6grO#Z&jmb zZ2Ostl+farK;Ddov$ydUTOGJH`&rq`c}HiWtB$|7 zGiugr>hhU-OJ8i=jCvF;C|7l=c-3tG-iYN&>#g#%fLiRB4{aQ;t8Gx~8w~nnKNc)2 znTV;L)_3i>^ZtmI`d}r0@nLHS=~vd<$^}8a9V2ty3jJQ)n2P(osqKS?mQ?{JkNaI# zQhd_cLz*L2o_5=gX|-|hn+}<*lNW;#XILIoexCEwhSP})BnumNlEr#W5w(`Eolg!j zMpBR0mO*2zhHucT(aGCDWWMh;xO`VM$0Peo=81b};!g&rv6l1$vN*&*kj&L=X=U~f zpNog7;f>iyEKHY7s<6$^o0mjdM8#?0sk#2vMqW)f+f}1u_cmt7RyQ?b_ll;IuFU&B z-R@)YK#E0!y>{4bHZro~os=kVN=UWLZyJ$r(Gw=b0_C`IB=O*?1cd}lJnzAlpSdco zsuwC4D)HmP6ZYc=T;m+4T%{a(b%=F2maT(}{U?cNBO@dE1A8NBqXBxxI*#h;y6cf8 zbvj9&VUqFd!Q9f)Dq1q5n!<)OMm1ukM%UTDcs0vOlUowPlZtXu!!DdCJQm>EIqu(t z==37yORn|hM==)1Go*vF`ZHzpBtM4hh3O#ATtU5Oy=Ge9W5){!ey z{+R`CAMUQ~?CfnEQS9TbkR5pZ5@DidI2Iq@SOz8BjoX+otZd-$(v{^~D@{pHgCTuW zeVW|iqYBg<(!qSZFZXoWD2(2-FqYRCteyKavC$~*E744Mtm!C`DevhkXt2m4_OzkLy2X>d3R3>I~ z#+;l@;Np#$^$biYWQ{0g?CD^$fLR=Lu62fVj^+gGM(SM})7;@O+2f5o&;|1jC3nuc zn+F-bc+P9~U~B+Z43C^fC;R0mvVQsWZ7v}N4tI@FT6ymP*Qr1)%}qg3(r&wAd=AIW$wTdE6Qa%I3g~bU=aFw{s$Xmpc@#Zd z*^rq#2%;b}U|RSlH+uWLmh23oI{<*1Ntg_KN z6H#!lq69zkHo7*wHeQEs@_q@|ss&fh1K%WyJo%yerMfVj#V0r&Cip&Y5>ak9_!4Va z?){6KFD`1`B(Jd&0=X0=_QOKYjnSv5t89=9K>xTJ-Cb)0BFRd5tj08AO*G z!maz`>_?dEylefL^O*tqCVE}0iGofMt%dF;JfVXYw+(+5<{W|#X$1WM*{CENXC>+( zHzh$1&*G~NygT%}d<5NKEpY|$qp&h5T1mIQ?S8HPRt9@nuza)Z-k|Ky+Fv;9L3a&3 z;j7w(iW}K<#F`&@{M`sJY(`Wn6b=ZpFTLq+J|I1W7fP$kWGL*%8*pXwrd9Kq^IMJB z;91^+4ZCR`uewnkiaCiWOv|#GdrwMYuR@6cSt!WEg3)5xy~h^Lk!VGl> ztw)8YgrA!XN;%p+z~M@)r$A$Y#2kpx)3Cz9$E?q9kLD1{-u*~jL*Fd_L5x)4y|@Z( zN&?Q$Z-c2nDSjd|oxOoFX}*~&(I|ng___sxF-H~YwmDp1o~fPPqaVfwo**T^pG4l& zAmmJSnwqrzW{c-I9Pe1}qUFf%Jn4c3(_iIT$zS&A&wahj@`k>N3Bn4ZTV?&u2&TT! z^p*W)_)g}n5>x^#t|hOeWGES=ov0qAo*^T(9U1#QJTs%ERl3|FPAmVSWVC^@xT8ia zc7-*6Hh-8AaNN8JAKm*Yl3SNZUmbnsVQu_0pXQL|pMIzF z!|w+Sf){kCt&Dfmce^Ci`R?oEsquDq*^KJB)Bavfqh_+)WaSai;>#xe76TzcDo{)C z;e%f50FHuZT28duS!Pz*hRRBGZvEd6`4hpK7oE1DLcsQfl@4N zJd8hEy3a_~qyVcH>6&B{drhU?>irMomX{LYCtW|xW~)zTu=phO>2lC=<$`JCsAp+_ z3_{ceNfTXlAEWLFq&OIO%$dIk@L;&HD!T_1 zTjZ0Hlb39m7AZZdTt7{Q?vtj~RaEdj4eHVxKIN4c($@cO$t<(j&@wZC7=+z802{L+ zS@A0>>;|ZO16*se3-f=(?8zBo9e#E^a_l^=OW!hhQIbX)vLeyn+g_C_gJXuihET<@ z^t1g-RsskgWSYa6@o-_k>vyX#XnTiz%Rd;O9$&RpMo3FopL#4`mFgnGUtV3QP(gTa zewlFyTZT5fjhr8_dvvroaM-t95q2`w^Vhjuw{Bhn52C5GL{vq{JoMcMJ?1XvF9$EP zFv&63s5Y7C{F;2=BEPW^$gKQ zL@1SdE2t6{^Ziv6?FU>*>_Wui9R{ToJ~@gdAudWEFy&O^nD4;jUERe2$ZvDL!w9<7 zSy}&Zo;`TecA3HT+0M@HWfV3xg19ION|2L;vGqKl;2s5@h8i(65E~AGmhYbY->WVi zTIyi3p+?Ot+~u%k??x0Qkr#glgs0(1MH!CWsBGZ< z6a8-Vc5?CghIU%)&bNSuB?22DbW!qS`vad%+uw1%3Lr`Y(IZlqB|k0P!&#?1k6ndB zthGw^Hh3=)a>nOe74W@2=jr{mXwm6-)`+NmBqc{4xe6lOJ@fsh2W%Uor^hNVA{gN5 zgqEGoh$SzGqEsT4YSI+Gp#%V%T^;%nF=(^zfN^#@MEo-TD4c;`pC5NOvvThzp zTQ7R^wW-ltu?n?hUM;7;M(^UIO^_F~sA~X2i|DWAUzb8PSh9+ZB&Ugj%jE2tPER;* zAcXo*DSk-G27mmIXA{li{A9>F01|CvN%kh z3Tl0dwbJ+Nr>o?zSrMNck*YA5|9bB~oT{qg1IHycaajf;v&eC@R%4 zwgF^{;bMQjoR}9esQ{N(m*LRn)R(LgP|X74YRjT;2BTEcHha<53fo!RHbfunwK;5w zR?6-|2uJck&(l*u@uX$i?Vb8aW)|(6B|lqAeEa5?IgetZJ{{sTcC)Ut+|yfK#-L1U zsJ`y-runmvzy$E}Z1ZNS!<%aEZ^ONC#)detFlyWmP=Zz8E2T+~Ax_gZ2c@uZ7TSVO zxf>5*u@YPZ>6avFga}U#jAcg1;b@EZV+d|U;||g1b&EAOYD474gOd03KWiezw$-=#YfaUajXpkyzCFr5EwD)pTvB5R zh4jG-v-jEe+prokpFkstTrTE;D+&o_fL%m<0RhP9#v-#St7_dXObOnB$>vu6Ll9`?DXKH3f zH{a|Mu~ztBlw#qeXJ)=SVZqGG%3>F~oOcNzmpcq=y8CiKDC^iJkRQ)&R((KYzvksW zjX3>>?iZ+)mm8CYU$aKeo?HUq)7`kbve3DLFVbxvkc_u>@SOH*vZIS&FgrAV1|-dQU=b zPq08cRcu#ZKg(^ZS*gz6akVOM-%i1HczAquS`iSyd3Tl-K!Hgij2*Y&K}+txbWh?s zy(mbu=yOSAV!q++`FP~VAb3^!y0=H1zT}FWUzu+UiuOnd=r|`bd7Rj&K3fhkdFW0i zSt-x<5z_a8RaASgn5N(VI*Pc@y;Il$H99O|re8iq%*y_39Z3|0peObIQm2T2WfQ^F zl$Ke1lU5I1ydW;6=W#Ygo?ll$wVQ0B)QeNULoQ5af{1&{LsL_L=k1e>bRTRCW48bvu= zygkIYT<~#d+FJDK`Mqi??WkR;k9pMYLDMQ4oN#;8DbgyS04V+XT71`kfqx4rI@%1v4x5jN`J{*lpWG6N25D(gBp;|&pe_OiY zrAA5%-m$Q$))N?HN+W%ik0>>62?b`tGdxle=3#mO#1f?3@-;dHm6esP{4SJV>5IZ! z(ec%2spgdX+r?KgP%{X3C^iYj0g6R-XRHqaw5GT)!_j0yHJ5Cp4gNcU?8 zQubd-YSHsOdi)6tSyh~`^jwszM`3fo#gkFTPWn<$BL5lg1&t15(({Kl{Z{8=h~wFm z^wposRf@3+GLy$bqtNPWBO3h-kyAA^0>|oXTD+b7QCXyMU)Dd$j^_q3tp@WR8ciM8^_z-8P%sf-c6(f^AD%m zE?aHB*Ut3Sg^o*pm*%-uE3D9&nPGp@V-oTx@?4y6NWq*Dm=wRV)lr{!*g%}Fd=Ahw zHAMoMtrZBS`4e+Z1uYL_A@WSz(Kb30quX-W2EvhB43CXk*&jmnLcR9!i*|2mR>g5w zg@6f7)_dGl=EMWG%7&q_HMC1TlYsO%9-2Gna-rL`TvrqZo~=aru?S=;5#poyxbWG2 z36uB!T2qb3|1-+-K>4v=1^_LL%_jU$c+ zQesZoP$gELs=>%NPntSBEXXsoBk=+SWglWbh;iXM3*UKl(eK#CgGZQp8CH$`$XSE^ zcs1B@g+_m3&)T;njy`}ja5OtmMKV8+f>xGQbK&0PdMHlgL_X^wMDD$;lP=`WJD@q_ zbbx&V#0a!{V)cfA*e}nJ5-Ak!Xj#_QD#XK{kF_GO&9RbBS*=XbYWbU|G}Or*Na1cC zJjeOnZ(^U0HS1gj9*QTzg7X!bKE%67?0U1JO51FXUSW!y-bqP zDXBNRZxZj+3x*}vnpD|QIJdF9iJWKzm=<<^dIt+qU)i*A2zMN-!A@P>(v*)mK{G#j z-*!Ly$C|!@`2^O)d@^*QT@{hFbrjm1j1>wDZmj_JNA!R-Y&TTs8?S8cXoRDO50@?I z^tX?-=m&PPYFf8twt0()5Wx5gb}OwOKaJ~_LGOXIkT|>PWK8g-SpH{&q{BEKs=L}^#x{J{Ogl` zH;Adi1PD&!85|H(BM6pFAfN)*!?-9{d7{d*?K+{HKkWP?FqFQZrq|+jAEbLVu4NTF zFyolbTZ8lD?5A>SJ$T&3p%w9d-1847%Dn=&MZHm18M@MrCnu&CKXIj8=5n*8-g$Yr zG1%sKzxg42Aun*4%13mbeHp+ue>H*C+j_M4Y9PM9c{TrM!a{q$OkN;m{M!?)QM)jY zrDlRDfMsv?fC!Pj!=}hZA5qImn*7xCv_NjvYyfZ9W*BJ#c?TmL>oXWbXF?Ec%#%~7 zb`poyQSx6wCiWq{;WL7Je3q@>Hf?wjEwe`TFnKP-v(GE+;Kk=}3K2bo{HHw6c>P&H zw_|BN9iEN#v15zJUixh1$$c^rOm1lmDkmfiFy7#$wz_CTY^0bK1XW(W@m<5 zd$I>|qQe=^HE5ZO?CxQ)8eD~Gnb_G)i4 zW|mw&d_v68@Cwi3`i@#0woVrzea{1L9sV0V6SEzS9Z(Zqc5dz%rGR0ikrJ|3P~X+- z-daCN=UxL!N=0#%UYYa`nd@g9MI#z$35bl?;-fV04sWn*XJ7)Whlc6DrR+T~&+v=2Sbz1SXq!azrymUsxb{+} z89tjkvKqWS^*U%wEg@^52qNY1`^!g@t83*Bszu>jX`Se$fL?=@KYMj173V5^EhSl^SW(~onJ7e@F101I>O;%AblR&cif#zi_C_9%azsW{i+&V150nYi!j6DL zOF;6|ORl};d_C2jFC&-~`jrZ0>Gg$`+5f3maHBT3B-~MD+vNjn3GB4R7u`**MYiOd zhq4C2d+012`(PEYbi18j98I&EFXi1EHoU3e^wUrtFE1)fzhoCvj8S>JX~lk9!-i*b z%3{yBSqyZ@I$KTTJf6wf{+#`|o)NN8$1Uer3goch*?+5zG~d{He~`mliu$}#@vrPC z%Pj0IF1_C_+AQ%Rb)D<_z~nZqQ=Z|ve8gk?itu)2HT)>17q!Ef0!KX#x*RfDHzAgz zpzFExwEqN>1RBSiv(I-9x`sd^VdS2CuCjKFB_nET{m99pxI86tz$&)2AnM-C0c3QV z@o1TkOAhmiGlNS=E;B|H{(;yFZL^>M zC2YKH29Fz7{*P6o1g(g{S^f~I^GeMhs^t=7&n2p=cL8YGs3>ugeX}6(1zV}-gXaKK zp90dg|6_e4G+kskK43HVfXc~6w;!_@e%9dDse5{C?$2cB09dTv64by!>BT?l`LzmV zrVa|#f!tIxEj9?-kWMV%l9PR_gre`Nn-MGTe0M2R`ZxCr!XQY-Ncs^y`{7=BJSX;U zgZ4@Nk`bOUSt*bc3@+saZ}I&TM?_K3u@Fk@GA+H{MvRg)wk{Ks?ai{ag}4}$YdBv33h_H?%0(PdRGAy020x9(rE~y0{f~n4VK4J59<-X0L($A2!b^2VY0KXM zt53=bnGBoTEa~juDhE%)(S}kmdR*(WbXZiKYxSO!>3B3V0k4SuAfhK0>RDbjC|H)`^V9JLPd9nH?I}jWh(ad zi{5ts`CO}1ae%aT_tY}<{@+t|5bsE`-w%|zZ*RRN)h=y#+fBfll2(VILw3G6mL>5& zGx{OkWjOfR@U~3)pIH;X}WDHiA9x zX+=E!X`t0J75l4@Fyd?vJSu)2eBe&QE{W~hnJo7Blf&;~p{#<*> z==4Wl{3|M=q@&{368>-`_yA*GMN$8Jf1%tX@TCi&J)&r9&mx|b4)Fp3Ug+CAT1q`w zg}SSi5Mbs99sl8Hpo&>fp7z~ramw-GJ2bBFVC&pP^XW`mB0D1ZCHz7+a7duk?<^MX zXP}4j6u57yvB3zk8Eq?4`Q2fwk9be7m1V$B%Rt*r+!!BcoMQe>hs|y?I|@FaWW^rpK0AVp^!TaR#ANP@Nv65^O~@B) ztcXZafhhI~+cpPaoa0Z+N1sTIsId=w9;LGnZHIj}T!xJ!FLRx&*2}}~*b{L4W=fgE>pW#-Fozg86Jnm~ zVvsPMF_nDu{0(};6ZV}$*~TgK#}DnIr2aY(<^xxoij9Ezq(;Axti;|XLU`b+^{>eH zddeg#y00=RH*(KB7A2@gQWTLl)u9Z)@GsV%lx_6?3bzg|2WM{g?2;+jkcZkoc^e{X zj4OWvb)EPW)TKJf3g3OqcH{>y}auooL4KjO(#|3A4oz2q@Vv6KH#SrNfk+DsK?V7zq&mE;C4s z?x|Do|J}#vblrCS*{ezadDDuTBW25d5;2XIkqRcf)PXPRRZmX$EMY&XkP=$^or? zB&o^F)Dqj5f9;bX8mX?_Ile1>S0GG|Kg|JyCLsSq^BKId#e z+TAri=X^&@vj(#nAGAT+Nc+^atttEe0T<&dY}xD;b4&jTwtXENBH-+oy|86>MGJ%m z8k?*n%+gt6Tgcqd*2c3pL%STQjmLH&x?{fI_4FJLH0-o%S`f91QH|uOpirxM@U|X? z-hW$nZ&;wn&_uS-nB5}OohWurC&!=|0AXlqlftR0<*+F^;Oq0`wBN%{{?G2m)CuqF zyzJHU^`H>=V z2j;cboH{b+zsjwf8!IN!W-oL8_HQ;3`yqNZ>0x9MxqHrCd3>{Dhjhzeuw|K{-~2ha z+jIwxYyd4mHr20V3n@m1rCIw1=DHDZUnHKr)k%>|ZX3|ABBL{h`t#Xiv3v*@3jJE1l^^W}L)L?d*&#jBqt=^w{6^edLCPom zWX0LV2ZCNaVJD0zqwHNpf}b7phh0EGAF^c=%D5V@^{20}fN?^`oQQ4guG+q3%#P#! zbzoQ1lU|^>58V2c2=@96JN6qM-EeVdv1JBWu2pBiPIB(VgJV4W^$s~1h$Oh^DYsLq zO*U85)AOZ4?jPu|sO2oGn}v5*B+|FYOT<`|Rgg{M?UbvY6Kp~zaEr{N$7RAA7vGv# zCf13puA#zmepiE%6J_@exx|vql-kkHkbHMUkh-j6WrJQCS#@Y=^Gx~}7jhs!5@0X} z!2Obck51{gI5~hl%M63Z`QMcJo}xo%f8a*YqXMiuh~@+xKhqsc2M*L4*x>hbG*tb@ z@2*kBerbyvUVk7>+(-&wgOhoeKX#oEqIfVstt3XlHY!Dx8GM3GW+QX<&xdx1o*hm^ zg6yR@0~vBu06*)j5FlSD02X=8SzbrlKoDCz-r(|X`ip(^auXjZov!B`0E4V2eHt#> z!#o|!i_DBIoNFZ$5Jx=lyTRLMJMIL)sP~M1exV$LHYo4-_xy12U2}lV>1)ll^|^S$ zeb!SyxIA1M;+k_@c@ZNvMe(IfZQ3xX5Dx6XzT|eR z_pc4$ddaH~!uST!y>3c^99e9qx-CS;L1_&m*B`I`i-ae$e%K$pslMMBL=!e^Nad`u z!?4{nkvMe~@ZnX?HRFqOI^yb(pQdRt2th-z>PkZMLk}7mx{ZB794CX`L4Zq&ipCQu zMw}1iGaGM9k4Syaxu+f(C>}efYU(vAjWQV&NDd$T{=Z{!q@%a*Ga}1;p+= zuLLAsiFYO-pmXx^XBTw8z`o|T5w8+Cs}i~unt_w?MGJH{?5igfU99~ax!ZKcW7>z| zmUfAZx~lnv4V`=uRc39nbyQXmRX(H+AeWImub5-$%L(GamtK2%?`oW8n&1crdct)O zo}OD(B7wP78v*vT>T8a>w2R}Z(f=p&$Rj$kiF<-SW?8bh&@+Q8u(F7DD-?5Kq7o%@ ziw2$LapyuiMJSjfNi0u9Ld+fvjotVhX!%ld!%PQnEu&5tT>Bb&?1#?(-2O4v$LS)G ztJz{TDFeYF`{59>i$0V<4^_)+8V;4thFONa44&P&jM`L3ETBCMe3e( zj2zU;qq1!sshZ-*<1cQB+k&TP2fVG}MBmYw&>)$RH)LaZ4aX1nu0cs^j>sOSh~c{5&ImI)&pgqQm>!2w1D&k<6DmDKpiG2SwzCHtO6iT(6`b- zF0QZtx|wm0GnHqUhVdCxC?Fv4k$IVPGG%d=IfZ|u0+<4n<_7rLQavK^0ipc6?yi^2 zr+N}JKO*yTt8wWc%OnKioGssOfPtqK9)pk7CYdY8X=92kX>81et`!2 zzts!hdLPkPCx`sFEq2rx9*8hzE~oXB)`Sk88@8UZh`j6VZ^Z5z9C=(T{Ej~jGH_z6 zwV7n~Ua`IUZG5kzFug`irX@jU#uCeVdCGP!|N8&=v2bJR)`$I1ijqWffeIR#=~{WQ zg^-)!{FW;6Nee|gS@F`BN=ZllPOGGk*drfnjbY`A8`Vy@_`50+RGCJr(({J;Xq?cA zeYkKwL>JL*y*Y3#ZTr9cMu*Soh0IXefjSdX;&mqaYv`*4N1E%xa9!SE9@yAbnrUCZ z#KYHq>XnvzU~nhW5|Wu=$aEva(UXJoNFo?_9NCg6cCkaS?Dn=LZru(*oC_pdcK@qM zG=W@+s|P9Z>Fpe;!lUYOK}ANNT*@oDLHK<%hEI*`)wk>mPo#I=HtAFEM_gQ3ton;L zNmO#E!iURGBGjG>#wf-JbEbgp&A1`o;=n(AAx#j}RyPGUnJl*R+ouqYV%gvtI9ap= z!JILl(!G_lRKYQ7AjJx^PZU^Gj*%PeNl?=V=A@^3+Cty2+vXHV1K* z`F$o##jKp*Xind}m9U%Pa8(U0j}sf2tUxiFw3irstV+Mt&F7Ps>YoTC@0Tb3dx#90#WMR9*f_0KIXdi@HM{iH$rzD%fiMFooI6#pbNR zrHT3Nc8orzm8tep(&apG{S|L466)(*X(LFdbf5Ihfnsa5=5NH#*rR_g+;2-sr#?KR zz9+9hRu0Xc+r~jJe97dm8{)hKz?)Cs^VONYh&8%A#K1fAMvma0NqCLB{-(qv2QZKq z&N=0%|8~Hsq`$w0yqC|t@NRzq{K)b#6z8TmEqHAFV%NUX3^%qf zRGD8d(BURNK_%rFuq>@PfH%k+>Mwi)igBSE<&1Trydg)kGn;DQ`IkRyf2-8~7<8W9 z%y78C++b;mypcpMshRrIA&LVtP>9pbctV?}!0ZTn z^e4KkYjk^`?*-y(^jHpNfn&2kXYn`~sTa8XU~8EaGkt9DaNP!lC z$@GMCZ?XuQqY6~tV?!&%unTu zVgp?q)i!G7Vpe{JNZu&;*HwrEv5#;XQA~}+~^hF-{ zWAA@#gpmMVS)4MWtqrJ0wl;L9q1a&08&E+{mJa)UB*53o!fO}x>PhuMUnLJouiD_# z>#cdtwlH zPEN2*XzqT8q_E^a$Ac(}hUnLn>Q!=0Ytq|SqG36go0y}#YA11{n0sNv-Xu0Y3I8+v z+eEd|A{*dBi~wM1D`&C$x_`w(%-x?9CtXIe<1fejN`h#em~P~ZU0~ru%-20@VazM) z>Hp!m_W@5+jf{exIeteN5x49caxCS|q=Aq3*E{H#K_+x{__%aWzzwXH3>l}J9;huivq?9Bp#f^jiFT2$o0{{R3 literal 0 HcmV?d00001 diff --git a/html/html/walk8.png b/html/html/walk8.png new file mode 100644 index 0000000000000000000000000000000000000000..f5112d6ce698dd02bee5edd56e7a91df95c2b99a GIT binary patch literal 67806 zcmb5VWl&sO&^8(*K!OE#cZVUkyA2W~xVr~;PYABT-5K0vaCdiicXznty!C$Pe0A&o zxK(S(TcnD<=G^KS+rRDZ4@(r+xB7SDC%dASbB$0to>bD5fy(r|*C+sw^m& zMl6jT<=4?}>G=`DlpKoNlX);~!Y|me9R~xgf(149VE(rPG zF(c6)m5~uSKCXa{fuWLtS&{@T>HD7{NTxTA=%AXjM=QHSM@=ngVnT^T$Qu+EhJcsT zYCe^3HdjV4ZRYvo2QwrT6v~$`>*&=j!%(nD>zyAdroM)h4|3QnW1lS5msbF_$2K=f zucrJy{85!JK-7c$6!qcXp$zGl`Sa(`HVHAYMs#g8wV>u^UVJWlXw7hl#~%I?{U z@o)~gT)}NGCQ0}oPASAe*PuAQb3hu$IF*RU8KLd@GL#*1C07cqP&WVuu_pR}PPJ_P z`Qd7@5ImS8-uC{;;T09k1=bVBw1$o5QWwkImRYsDnPBEiDBKcD=%zl5xQ1S^~yIWPJP0&4!yU;KKIo{aM zjZXl6|FU2385|wrgwIHL&tX!q5`m?AfVkIEuvJBS+j&Q{kv3Dmb*9L_>{e%=yS-81 zl%ap8qPF;l2{HKe{LAUtaxT7o5vwKPZMk|d+Q?IuPxwS5w_BynJ7;u>^%QLAjB)lC z78W?|HldT*Ec3&Y>AEy=h6nq<3zc$M%`33>cXf5uHV^WNJ=F2QOXmaf4Gj#sIU{E; zVLrl;=w5${Y7@lSuo)+o-t79?NL$_naN<*WfymZu-3MtMLqQ>$Vb6To(BIgUbLe2; zOFI~I{VS3R5(O*4fJ8HF{V0L;!;RYe(;u44L`&b7*h6~oQ6Ljutba(7LuyWoWj0`Z z-;VPV(ROpE*$JRkTg~U&4Y!nV(Q|1h2(rd2?ZM6?LD}eFT-uP7bL!Q8GUo6O-Vaxk z`>BxDYk z==8kl%i$!}8r2VRjKe){qr}^ttF{b5 z*Na@|A(O5ii*F@bi_O1Gd?gOZ23hWHvE8hIV1Y3WHqjfxkl6VKVA5?pR@}Wgnq%WT z>L)YNmY^t}_Y_jLqor;v;@=U_jZfErc>TMYAK+8JUi%Fy6f@Ns*pdHN1LaH1=_Mpf zW2B8{I2TS8K??EH04AW`{% z8C@y|oUCR<*aMcIte9AyUqg6d4RlfAz;K(t=&-^Eb0G!TvaT2zWvqsdnK1lR|9nco zjrr2Fn#*_KdqL0tGKXb0*~U{<-}0O3HZ+Lc>-;(h*3M9r>ogvSdnxeOekup~8e?Lq z=EZH4il@ct7kh&*it(ChwclvCXv=L%nqrDC7w}$g0c>5`2$n8J8b_e*edAK6@tf%@ za87}fTiLrlMEUYS&nnOWpW|b z?{p|ksYG^&_x>4qIMcW9(e29E>>I`^Yjod<9-gykt5nZ?bfx9=n*P)Hg zV5J24yeD1G_0mSl^xf7G`_U3-js%=q4R|C9fz)lK`G~mkOf_I_eje}82 z=d$Wl6pZ6|y+E5YV{t$Vk-2XP1#>w@8beC<*Ux1}MfU&ra|Ip9NiX$B{3!<^iYz2= zueBFA>S2+HFzMf+eR_iHpR@*Pgd27<(&^+F?>2sMz-G6)3lut`J#Vxp-0!cOYaLB= zmiTu7gv$n0>KYLoioJo2{bnh>{YB#znDF{7%2tA3I-{5El`@&zuH|`4ZH`Zuu zH~RATer(Qe+)G57ZSNFOeFCuAmeCVphyHoBW=lwnk3{OrO0(6Q+dy!Pzxz{j?IBL$ zCTZ%HG8@#Hs&wysGX{6ejV}v%6{V^r?}*f$&nNL^X@f(dOu+u3BRI!&yh;YIrkUl7 zI88yV)*`wuE2rBoD)-7Vu=fyNEO&B2R6uJ7mC+RWOju!^@BYP>Crc-N`N#4kS}>H4 z@LcVVDzhs4fU*e6{9B3G;QIdqkv;==_QzMYSCJJpf(<)-7Oj)qI5(; zvfI~LgbMT5=bfWM%>0&;&%ZIY7(utcm{Kifev7p=W`!BiESmpt@lEwXxs57cA7}_2 zteFKsRnf>XVQJscn+nZv2FN-|vIo!2)`mzQHap(q<&Nk?WRS}Mmv$R6MJ;X$c>$!W zw;X2Z#7;>%FW*4US=b+Gm)4`P*OaamvgU&<=cdDG!(T$| z;mZH2B&NvTj8s(?`~{=mdp=RzS@I%S8C zgCH?COfy+wK6SxKY}wTItSx~%A;SJ8@l=PEkoIBua@`@Q<(c-CZx6#$c^W;E7bmib zZH~mexJc9RPpE@L&rH4{2X@(BvdKKnA8-Jf7zm%Gm%>(|vbWVbhuKI*GdFG$ZU(n! zI5!Wq?;jb&NeOyLDdQBC39o>i*xp2Ts!Q=EEkNGx3NYoXZZx`LD!p-9Y)heorc6_d ziL=IZIl4P4#>>&5U9-8HsRZeGo$nl@4)*pnI0o0QE&Pm9??G?766BzZ=1p*s&xFT( zDl5;$YEfxWMobuwp>TAi7mEq~w`w40Li-@625|XxQn5E^ifYWPSKlv0>A=*U9&lA2 zY6rqe&!5;JwO-LGxIp;cQjIFsCL=1Hkz#!PfUihJA>*y2TR1StPO2-OB;&b#qG^pA z%f!BGwiZ<(|FNpVW`Z;tBz`v*WP6XvD^L--pu4Q~-O5sis95||%uj*EUnSM#dNB5< z@Qf>lQ4-Yw%Uxt&HS&r}B@hvdn1xxYFz1;DQk)gN{}9fU-F;?11h(L%Z*XtOoF{S zLIV2PzIU~oj)O7tYnX^BfJ>Q9^nKEhB->>f>C3Uy@x3SFEojlcoQG+P zd`IIu41jTvgM1r)5(mfBm``bVmK1;CoN$)#EG&2+_B>L6-@jdZsM6|5Dil4S(8Kk? zr{ZiI;~=GcqkZ@5L>7*F4M${eaq1+IrvC=a^`o{#>cgdVuJr@Xo-y}wHPu_F*OPom zS4cCu#}0MtnhUfk>(w{;5md@kCjG@>gG+;h2Z~!#fudB|EMvXv-G*Xf2YzZlj1qPXWeVJqL17?|WcL z@`Y$)lBlSt8B7KLVrhbE;KfX_YHf2-7~xqV&0wJ_5qDKQNSwwo=`rXxE|;pCvd+6+ z096VYm3CCzi}aXO4?sioGV&5&)`-8SjX_ccEqb|~jok?=hh6uPGr_hxyh?*nOKN(g zcHa#x-sNi5$%?I3(lJ&5W96XVfYvCIthrz zdSmL>qFiuz^zRK{Dm@1@rct^SZ^Ffd3{Z}oU?jF)f1kCds=!AzgRu#Su>I$GZr88e z%G)`eX}t-QHQFYvQHdM};#>7u6kDflNy+CBkqtY2J#%fEef4A0g}PFK*oLP)tO28X zyMtWwi&nI!R{18kG0h|4^I!K==;OoNGxZQ2rgZI;f`C)hucx%y9vXT$Nuv^5r(G=H zJ;zL$yzq{?cSLc{{ptlm+6F^GFk340vR~ z*G#Q~&DT4Yub=5-%o%1RTR!J|=?9&L49IV9W?b!US@x)HKTB`(dils~?*;LMZYNNR zoaPMA;pr<#%gYkKMZZT{f_W%#Y884y7cFJ>zY~3K$=s$2f&(JC9f9( zTrqq=m^&=Un@v?qeS6CyYco6Ai($;j2xdk|RNGB4i7Z3pGm4>B*z)>1F}l`R%*49E z{49=d)Q^Y#=zA}`o^56O5TnIDPd1cLS6wXJ!}!^9Wjv@aluFAmnuzu(RY6Nx%Q8QI z<918%;c)>p!#+E8lI0R6b%=!y^_+^mb+;~28l(5%WBo#=is(K<IJ&=y5Cth{ z$k(&C*YXC{avjE=qnw37Y}LS8Kv5iBFu+q~d@fF?1i{R!TZ0JEg?w2j|FNndWD4ByjpHAZ~PLVk-JH?4QF>2wGG*Z{ddeNr14yYj8?na|c;(^#C?P6b;%; z(c|Z;oqL|lU`KQQ^8XK0KN%bk< z)XcR_ESO!*zuR&SGq^f90fAQMW!Yd0*qTRL_BVwhc!To85)(_C?*>lg!GX>NtF{Jd zaZ5!?Ri^ankLc6r6n9%|*^sg>@l74j_7HS5MDh37;3_VNAj9Tsh14^PXTW|`XI6=z z$cbbTNY_UbVPL%-dTx*IL|%q(*U{j1O&wOYq`;aulvDjZm{mJY|5Oy-rHm^+dvse9 z@Z;CtEmsuj+p&UFYGl;8-B-|5xLvIw$X{#vpHYYn zfxC~f)vNg5>=?NM4YXON>gVsDDgJXSv0n%Z+_ljx#+(Z7#Y<6RVy!3MbYHO-H#Td9 z#VI}gnsaZ#480PUAtnF-h_ZVCY!|Qd<6DeZZgio8aR2!Oe~(-~sMLLM?wFWi$JrzI z*<-pk8c3aY>YwE>F(dz!Hy~;dTheapNerq1UCmQURE()*e*>6?2l&v8TrLkyLqXD=$xKjdOz=?%tS>a#$^h4-ac|FnQ{JtwB_810nas4QXtd z&{)L~vsF3`<~k`j#o>FF)Ur{g1L-W&Gg)@|ai2tao9{3r?Dv+qpCKi?G${f~C!S52 z6!Sfe^Ce}5UB9G(r2on(gIIxaiAxl;TtL*z``Q3SR!b;8%+L$xl5G4nWGNIPYo}<1 zpd+8R?4~A$%pDsM1{-0ckZK|+K6ldk!S2;)xE+5)u-@ouGDK=k$fPWC3;Av>gz_a{ z|A@(y#cNydTIe&SX9MDvZ6rhELgO=83>KteJfh(Kf>SajYfseKlGF-+jZi^4R7-AJ zDYmTY67`%W#=@KiPXEO>DcB&(@FeMfQ?WDB#OJ?f&i*L*@uG9mM~A8?!DgLhB&29- z;TsROUnal=(}`E?`mMc-e_3lH zF{b-g;!)^tS@BNSht}BHQS57H+d39_bW?L2q0Jy}_4SJnlHym`?+UbfQ`}~<2Hx0^ z1?Qujym%lFfXjbg9$TWF2{AGB%_SE{aP#|5+<_XAv^_lYeoY7b@4oPbrVa2VF@ME! zy;!*n8lBR4M2P(+$54o3W}WxpKy#`B)S+O0gc78Gm|iGtzR5#nD#=5P2hW4<@r)+1Frj5p@#4T4?j*K2Tq1(LYSOaij)@SEaM-T z?!0WxuL?{xJktgFyL_`aznyb8SIjTW&{TqR#<0e==93Vs#b#(Db$eyC6kUX$^Abj=v{+9e7a}zn-z&MBE@nM zHnFq75BV54!sK>D;h^u}p25|Vq!D)F+)-()(Re=%wfp>$(k(_eVLbxVc+alHG)8^Q zf66k1M+Wba+?D|)uCZ1PVR^G5scG1*4vdAhht8yEeHKe=xr($4=8mM%si7?8wn5xbZ{8IA{k6$AQc=BIf=XRaLpE zHrgMqI2k-=&YttG)M9f}?SWaHPa3PX4NY;cpKbV-SLJPFu>ZCFneiypZA79u&J9nu zO9aj2hsmj@^{b}Rw6BxJB$u+7OkeEKuBG&}WT z`Wweiu3Mlb5*_AM#PH-yx0(h7bt&srQ5Rdk(|iBRGs`K&s8-W!LvdXVl|Ge!UDCNG zWFX&f#`q??LA}XvY8QCe-*YU+*5ibgl`AU@yF#s~88#Batq-Tz>4(!&GJtfRqVV*D z#Kb(A#NG!w^O`lSwBn{b_cQ|*vC9$cMVXXvff z+HN|ZE>YpMf96E;Zi9fwv^swbqteq0vfM zTkCe_U6%=8sD7L5<+4ze@w*2!lK<-*1Ss`ftLmRhr;b&zx`s)T$3%kTESm^IB=*w# zs>E|x9EI_BWtr#jGD1iqo5}-txN6;d3Ovkw>^@e09%y3BQgY;JcGklgttAQ>5P32O zNjdDUCsZ0*+n`%H!P?+N1vPxaW6AO{1quQfG2VJWJRvG^Hl^`BDp-?Tr=J|ti6fqZ zMJ5&o+e9133m8&MUap(HdWSojSX%_1f|az{^d1vrhF0fpJ!RcpVCwh-Z&`;mgF$L{ z!tyOrS~33^pMPS%QsOV?7kxxn$hcn%rSU9>!C~}vEzCb>Vrd{-c)O2mWWpL7QYm2a zNIrkdf52LyrZHy33R=~lDX3>O3mR8dP)N~jPR?aV#XniE{|UT)2xn>_I8uR`!Lz7vz2(1U zg$#81q?0EKX8n!3{!avALHr(=vHd7`$QaDpf0%Y0Us`^PxouQTh0|pFVU0p@Lqo~EI<-#LLWnqrS zdb7KkVRpu;5~8A+-Y<`Zs^x@-)1VxjLt{G1_RS*?h!*VAVbFV?idi& zHGTrce-=Laq|}G{LN^QYD+@b+2X<3=T#yRn(uC`6R>t#Wu%=5j=i1PF93od^1j!%dq;p}Y9+(}&}}`hcLcZ|f(pLi;D8$Ir*9`52>yVt z;J?hp1Kp~aZC80~Ea&7{CujP>)q?q>{fV0c(`*?bxiRKqg^i3N`DG8v;-JTE=6DDT@F341-@-g-rRYW_~ zF)~Pr!}UMD(8aY(wX z@|LifilxdNR0f)~Xxca{hZGavOEvW0d9f%PZV#c@8|^iY=m@B#B3m*#{1Ec{o6#YO zAZ*XTGz22#T6eJR0=-0|9zDu@Y>|GyCAX=){Nr=1afnvjv2HrtGS& zxj3kI#Ah4kbuYV!@(Brd|E652I4qq`KactS!pLH%yGkq{6J1A>M5#Qh298t-{&RV0 z6lhLC13DV?@z>n<{%K2U27lWAX~kB|63(yVDot@hAiQ0RrHR6dkn)+1!w*U&sW^Mw zWPll|2DKOvJSPT_bn3Ie!?!S?b~{K9HR=18)KCMXLrA%gvHdmv>ssh^R7zMe&$I)j z$QToxcdzgK1KjXKoXKq4N$0Opt$PLY$_-3EK{qo+_kr$`9;>?rchE-u(d&PeaUBnO z8CU2IQ3dqzKPvtn>Ipy;@b8Z%ml00<*|9t+DH(FzlA?F#!;rX?-WwE>344%%wE0{s zKhy(GdP9EV0d^|2Ju>Ndp1_imQ*C}9F#Tgrx-%q1?E-aD{G;N;8fG+V=_meATAB{fkVpNb3GBIfFe{xBsFPV-0Q^2g+QdmyKa`gMhbb2fg(kh#ik2;cn-MG8myx)@pE_<#*k|H~ub*0TGLp3!R8n9w0X7Pg8NsaQ?-S!^G3iyZK zp@xaNF6ZgAthYUCOpNqfK6&0|A>NbZ%6x)TnOb#)&K z$%;kiyp_9VEjHx_>PzW=7$}wyTG2GC45zZuU^LjbX}9iTB8yeSkXr`e*(N zadsD4gS!(OShT;+lb%`;GdfUFMlGSXXhVa@D$X>~1^9!Vjyo8w|a+lzc0 zcoBN5Dk4){HaKXI+-gp#;e_Wur&=#Q2rF~maZGNMFDGKv2V1#o#ArYE7R0gLdv2lr zU3(_$TtoJh^(K0&Oqk>0dqdHE?`qNR=kjPYM&GA`fWU}B_5LgFm&g7yOMS9dcUIac-TZF*6kw0ToX{WXerds z?|+v7xs`C-752(d3v+k22Ft;_3^TR*id)V*3xQ|>0aMO4aStB@D~D#cb+K}Q!%QIl zg2J&b$Gc36*`>P{gqE{&svt~o;xiy{L!lEOf<>3(IWFy{s}gvnBK4vI-lgkHn~{B; zN5W{}y1T%8Qhb^Y-@0mexJO{!Qdl!k(B*L!DBPN%?kmQS58&R#Bc1mmVdE*lne+YQ z5*;(%F&WPSG8|{RAj2Q_M$q=?%b`-dxbX4r9k0|LcC)`2Y12)(0R^d~N!;4pj-6K2 zfVFteBu0YL(yP5E$J`g|7q2Rp*b%Mx^||u-G%wJ0(}m704%*Mp&+R{zpuag(!&po| zt>1>vHyXp&CHkbWTX&A?0?TL{C8oy3!>$ZJ4X8D_G1v$I5Dg+Na&~%$MbsW2D7D1C z63PK*$tlSr#piavV_`b*wbq@pPvPNCS6dhuB6z#g!gTklJzvP%sQ*MU!Ag9*ITOFE zO6!l4h;--;YyV^Xo$Tb&mHl7?Ma{?=W00>=tWLI!_2wv2@R0J#P_uZ^(|86CSnc!r zov~4Ha#6};Yk3(A!*_nS4SkI;6xcG?{cFV>cPW33VaU8=+I*rr@5I$aG zPBu*x9kzlc9Y|~mxm1<-_-dCB$~It_>yv11H^vFJp(ONnMVKYv3ECFQ$9ocOtkkVr z+wN3e=yOm9YR{aFUYNV*?V<9gWRx_vuvtvQk;TlJ=d?=K6>rHQ28NAC%;noJ7hS#N zhI50LHcpKPC<8A=2eAC9fZB%{s`jl#p7kqJIpiJz5!h)TO46G#58RLAypo0ZiFfq7 z_wB0ak9aEw4_S+KObEz0}U|Z9r{#P3tI*VIP}^kS{iVy|3fshx5_zAg?N-HNNY{~=W(1% z4aOgrN55QOj({cB6kDgN&YKevmG|yyfZ4PCP&z!Ft|-5H5{DBM;C|L^;M=b)0h?%X z#CESV>H6}cd2~-o(8AMN_19%bD6Y>0lp}o+Kbw9S+#F#8n(^#a3A&Y>-opKYtD~!& zVNY!xQ9zM>*{UgzoL)}!q!!$oMBJzJ91lr|^k=2pdwV%HKrF{N{@k%MSiO7eoO88d z>w5!b2tqtkdCB~;POnl;VsV?}0v|qgov-CM9Ji+g8Hbn-0{QZ%LCCYV;sF^6dh7Qj zYS!rMHqyG~hBV zKlWU56VOBxYIGRpZ1FyxfT3gXS`246w`}4cbzS^g!L@jgg(yMJdm=} znZ*^eqy+Xq6No*vX(v*!#|aYZOK+!qD!If~eW;dUqJ5LLUoyRFvhI>iw0o3Tu00o_ zf6>DgADPvhhmfMf)bD)Z_!NPuR%?V|bK-!U{ZoFw^rRMOA-J`=p}2l?p;rG?E*Vu& zbF>&+$$>#jr@rNZ{!e&fWX$x#4JL z%gc`ygU$qDM%>5N%N&Jqd$_B1=#l!t;@NAOxJ2iL&BT^Jq7Qsuf0fEz_FXq_uD_8?_=!NldqE8mNFPhX@ z*uM%b?8zEtDkzK?r<$P^^&MqL*2Eo`ps4F!JX_BuZ$zEpCZgi7ry7{(%Fqg^=;oA z)lW=DYcGz7B&bd$$S&5!QW|N98PkVhUVs@;53>!_+)KYi4 z6%wNWP%Wk6195g`ogg|ce&7I45vZ)XE0==P^*P8muySj!%)tIlQ-+p#nf6S~seLZC zP53eH<=zz(X3Oi})P{v*o5Eyu1qnwP#h zBUB47zY>Od>aFYJ(VN~B*h$UwMzh)ko)H_dfx)?`89h0OBmP9(`4q!SDo$cjF`CvC z4QR>|@#YA69k3W+eMli5He@b%v75N!gcqe~%mN4R$FXBin0RMc`r667epdI^3~pGob}a^Y*oC&w-q}1&PXhkq)>zB z)UF5>nF<5@5>*}E8?pQe>*=Xq-zCPF?9 ze>mN2g2yUam$d$r)8>O|%i?#q`AZ*#*t)Y|*iwmH?DpryBaBl-9twe2i9cmA1+I|P zoX$DF17l7N*3GOMH>H*4%v-ysy+Ogj6W)l9JiSHZw%&I&RoS!Fg@GOAUzuB+bzd)933MDV+*6^JY?8@csL zeyRKQEAh

    *JS*6tIj>#R^zNvX8%VK}BHmlY=dw_G?Gv_d(-KRhuS61;ZLptc3o0 z6bZJ$4Ick95htaHP`HPDdr>Zg>&t+S*=h}j0b0E!t=P0uL8-g4A^QxO#s+ei??TMk z2@zj|z1gJYXj}Y>_iv<4+eKR-z?raxIABTjhy5ERxh(LH_}5r-DnEZu;}(g`h>|@W z&X8$S2}|!7)pD&_T=&>vab`iCmNZ^3Hq_m>Q2=dU#6J5E z&ebOh8M?j5Hv|qoe+s}f*ztKqGPN2;Vv33QWnXR>f8tvc3o!lJ*LnKDx^1V7^907; zWYGqvvA>7uXm?Ypa*T>^0t@Sv6{&?gVgey`Kat&R2^@_cDq3;;J9%_AA%bTH3g6K^ zmT4|M*0Q_BnB9HQgQ3qSmFdY6SA1;2eDT*Vypr+C{83+Uef%kY29lLzsk;-%$!U3I zQigl{1%OT3XYX8huQ~P{3&d(5aLREEMw}onf;i1+P=5?9N8wrhx{_JHxEpE@kReRq zQenEDZH*Fg%pHwK6VNBOp>s=xc{jNQ{x9?$7&59aX4)P|&U?ppST7}B6Uh}Pqbys8 zytCofG8ra)Lj*8IK^`Lcu%Y8j)T4QiveH|t zYL(vX;&*tF-o-Q3A076id@%%CtsXlM$$UC1y48~UG}GIp_i317BhI*F#XADCGMYck z)^=FC8Yse+c(<@^5>dN(E@jF74`IP7_as|2*ORR0T)Eq zo$V2&jwILuKCIxvuIl{io20F>ZA#r1Tys44chW8wClwomst~q(3m*{?v@7^`WRhsh ziQ;egerMGu+Z^`|g?k00L>Su7!PJp@+7usev3mFrOlW9}TZ4`;qf#8WKiM^w_%v>Z zdcN_S2(#X{oNy=MXJ@DId-hN+<&c?$Wx^S0ImSwh6-~jRHa|BvQzDWO@JmMt`s2qq z1EpG^L$o(Qq{$n%GyBWbyal$z6mW8iiA-%0w|K7xu;?L{uJHB8mPv1-7X*&_Wwv1p zb^T=mS>8J#3sZhDP*%{5|NyA31mKYcc8$_Tg; z^Q%Ov>`Q~D8ds4##!e=ox~bsG`W2qMyXp{-XMV&{Z6w3kg*v$8%7I%o;>n5)8QkDJ zPf&Ji&|G&y2W*+mRP-O@mY2pj=gg)AIITu5ZdLqqD!I+018dg;hxkoWbp@oaXyl0s z?zOnUA5)M5b9CPr7e{Ef@emBRDJGCE{qLbqKH8lzyZkm6yHk~=-y3Bsq^v8BKf(`5 zj4uJbqp-Y(=3{uZuJ|Fk0uk}_&Neq+ zEU2UZlW5P}MS&Ch{rV}fz?)6}0k_z0z1eYFg1^&}k^KVMN zoda$hb_M>4gqXM;UXi*p`9qS%)cGiPlKbzRT692d{zjS;;08&;lE%nFwu|S;=#U^{ zRJp?84! z&n%Cv=z%32a8ctqLZt@&_|MEd+`=0nsbTfEpXFScQ?f`0JOaWrf?}=Bi-Si07}_<| zVDhig{N%gHRSqxfl!O5D_y=Fs>Kn5=8Ok1#5AD=bkBoWxQ zGqGedB4WBNr>Vll*H(+5UB&}=W{6yMwj|^xb6G4JJa{NI-nU zCdHd6qN18?31ze+y%o_pIn$7XLV+ z$4t!2i{IpY(rN4Sq!}tyG>HwgVeIiI6+BgKeS7r?k2BZ}Lr#kKnx+;v(qJ#R+$Ns7 z9Jgm;N&@$RcpLj`cx#r2Wb#k#Xyq9J49E<3m+=W855*U<1QJfp24xxaiuWeCukYPz zcpNs}@5Onc;^DaOO+p$7H;TV3)PEYFqoe;EN?;Nhp;)Ulln74>aY65&M!{I(1k~CfH!_+W##@#6UX6P`PrK2ven9a5ohIl;}|v3>wE4#OXN3FP(;LRIxi=h z(EopQVp>p@f7Z>-Ejilzc%CJd%K_#cW)acX&w8s_4TvwCxcb`}s9tSiwgRp-N!5Hh zM zR)W%I)5Q7n@bHkVpPrNiVu1hr`8g#hrBta*XizXRENnX7>2TWa(8q=$23Tr7Ult2u zK(@7t260d?4iYPA60XjZD%mR3#0lls@iteA<*#O%(dA?Vt@G~p;$_~6tK(3DlN)pTYnbWJ7>5tQTJcfqWEdVBY_){gn=2V3=q#Krm*L zfS4vJQkTY-hNEW0_+)gLiu)dCDovmRN~yW_cKWBeQbO{h%*6({m?ZK?7nHyL0@6v3 zx;2IXoERqr6bFs%(6aAbxZjbPyHBpVq>=w`prK`Knur4C(J*J8^8bbxLGKl1bJKhh zE&m7Md^bkVF&_{e+m=hM(EkHE2+C5tGl(>J+g1}aZ z-aP#?z!Ow(7TmW2&!MN>B&r|{qjHc*@c*pRC1}l?@g+DdYQNIaB$xeV>#pib60DE<|RTmU-+i*A}UGS@(z(0-W_aDWt^4y{#AJf0a zqjtmnm3Cns^s_T&LbFoJMQ1L@`9T4Zp4D90K5d)S6^96-g1I?Uvmb@b>iDM0;!?(` zNEVm%};%rsOkUdqiHcY&TevTiiPArm?!f;HtmrDdXezuBYppGl zKUE9XJD1_rs?Aw+JncAOTADuCzF0%Ek0b@Dz?O^1XjWsFx4<+%4N$q79_r<`-gBDR z@KczZR+#VU7#%q~>#(;j)qGO@Olr6G##_v0eqJpyQ7HunxbyP2o5C_YY#O>axO9pB zVS=gG$i|k9z@P%slWF4m;H`# zG|!haOg1d${2Ev(yPb5M83^b&@-`p#O!beenYK`0$vpwAu{)&%3MM~SN9vF467(6oQAa{ZXd7!LdK)_P|S(fc9xAV|el{Ux6(-OY}r_3;22#+jY% zp_C2n0`KBUG<3lAXkPmHAkFrCUM64tJAJDFW_cWQO-nVMyUcA$(`qPYv=FD$DDR`u zSJE0O)3CHB8gGvQ#VT~w(L|-spU5QJnc!UQZGOZ1#Z6HeIShX^{lM4Z`oxn5t9hP^z+BkmKa0k4Q_Pmw zYL9o?GG?cnpK8O%b+D(bK?r=wyQJrR2**uzg{jVn5c^Y7OUVC;=}b3x@9oSI0T6E8 z{>_KCS(|6zgxj@qu6A1^-U3eC!68}`2EZRfkcw_IV(b8-L z586#Oj)*LkUiX|sf&Px2xr7|HxSR(>y~K_|*D|>$t=*i1O?!qZZ-8@ZNkRVEzWu@3 zKx1hyYz79Idjs~wsBow^84G0S4szn-G4uQ_^E(&I?r*{=8w1b972PQa&z4r|l2_*@ z=B0F#}xYSF}hqV+x))}@C z`r|q~#NsE!)|>xcI$))Fp;)iF)G_^qGCt%z+t~YwX+6$FiTPsUlv#^E=wo?nFmfHC zu#pk@A=?Yv=H?q#%@={RQPCF0fb#_NvCLSor6aml?b$L@x#8GAN=laYJTO5=`!lTyN#6qf$3K+|}Q<;%Opnm8>-9p5H#p_ho!Cpz1<%EU7!4`XAQq=Q-x`GK|r!XOL z{H037gPTRD11y4D<9gfl06ZqH(>>+Ik$Bq9iR>4K_R->aY_?YKbGif7locu{qM|#e z6(UWH?IKk;BfZ%GS>_I_{SZ)S%~zg|Ua~~oWz785q0~ASM0llq{Rux{n3*>Qo}yxA zNS>N0s?b&b!k|XO55hx&(GIxEIMtU%o=wHud82u@9$*`oex;!6PA^(p@6m&7lPZ>F$=4?vifl4nd?rI;5nfyBq25hHqp2_1^c+`_1e* zb2#i+d#$H_Ppz^tS*7clv2yya7O1&QkRI1jxyz=fWqDStrgcshFc;Hy{Z zgp64ouMuXD1kuEFD)S3#B|hf7yJT`ziDOKBw!>nGP?BjycR z^DVQh3gb>Xs}5(6QkqvS2vtLm`wzdVG@Cu;eXGn;gC zve|&j5w}L(#1k__^Ntw4wNa-?YZn&yfN|h?oZCo?H>G_Hj;)h5`-Q2wPBb(1*m*&9 z@0~9ux=9_Jy_jaS^FgF9GqzwZVrf4RWX6G3eU+wFER}LTeha|lkAQAtP+p2dq1V?l zH?!6V`icvy$tbIZqj{6rc1}o)WYm|~lB^5%Tx?%oL7CEfoaVM+g%ybzVI6V83LAM( zs-u$#1MU<2llh*`qUkphnN0itrSlR=%09U%F3*y@2(~U@==?=ayiw4ofVb;yoEm0D=?M`7~ z1MYSA#1NJl4>r)8f0M5jp^Ip=6^sSdZT=P|dCf+I6!yi!4CozcpZ=mMEw)O%zZQ{Y5kD#GACxTK5B`x5yDQE zpFT7AK%;FZ*}nYTP>tOeyVPRd;FU`5wuW5Jt{P#5l_ik#V!bUDl^=}PEf{VgdOmG6 zVa|;*iw-$9>^Kg2boE9ZF3EIGc-7cLG<1u|S4@Q4?FNTnwRbX#iA~fAIa5!s(9gC( z37I1tNs9@0J--1i`fzFidS!@hr_Zc??>td7ZZ3YR00*7G&%~Xlg?_tuE-$~< zaQ3F`nM7_<$u(?~TSex-9c6iI$Q0Z9y@o*~%lTu-kgY8NbV$SgYhWa)ksP*6{^xIe zDlWcM3|U|AOxTc%7O3#nGD7zt_z^7WUfVNjM1jdsa_#vxg7sxgUW8&XqKBQRUrD@^ zEWMLlyjDeH=rbZRM)F5Y^Mk*)U{YW60ZqnVE=nJw#J)S-p6Mukd8>Bm-UD+IRco}O z@f_RR(!H;7=}r7#y*dpPVyMWRdpZd#D@F)gx{%2e{{x)%Tw*g=R|-=5R%?sXqw^Ps zpEiph9p3JJzNj<{vb=+fOVq0vH0IHAHv-jFmqg$t^Qk!z%Ve0PJ^uxjFkw4v z+e+JNwL*L1oh0f(47iA8P)O~hxh=>CMaT;Mbws+FD&KjR%`D^B(QU`HD1Xg2Yw;hy zzhklXKDsu{{RT1}uCLeH?KzUx4SMzM{Hz3IjM(fmBB4gn+XJ0;x7W|E)Q5ypd2BdSV6xtCmpI_tGUENdo5mBS* ziaVI-H(|IA9PY0xxOS68<5)QGy6g@~(Jb z8a06Zo(H)a2`F{yRc`TvrPoQmge@tl@^Xpv5`y%bnk;o9m&=K0?Yu6$efBhxPFqWw z`|Xe}qv#ctcW#6@&GIs)UhSWwT)yo^kEi-WDpBJ%RjDx$S3t5|B@X|mZ8oPmKYbFa6I8aFCW z;iqo}>?UmXBJ(iTb@km)qx#A#K1wBoq=!hH1ck8kV-FrV#+CS{cQhMSMLZ_)=^62W zre+ETQ73|%I|-YVX3JLHV>J-kwZAwZIL5joczCcEcIzWdIk8VC zN^Q*P-K-Y`d$H$>XZ3h#0SAZByAGNZPIvJ&@j&5n6XS7fI;Q>Uhg(I-V&wG1B*k77dFP$&7M zzL+nUjQPuC(ri_V4ZZQATzHr1B)lPe4%4(%K}3^z>3(4y@8;G;F&C{0+7BlaxDu^~ z4(H@GRw(PT&&_m{htr(5K-yhvj+4bn$mGX2u5cZVH_D-*yD%x!q45i|K?}1JSUp-P zenK@*1{zP5DqE+CR?PX%d;x^(P>HS@{LDp;qQ|L zum|&vnR5+?NBEkuc4ZPD37R{x3mH}{^yMdpfl`n&LPF3OLLV~Yy{APNlUOeLAyy9h zC)Gc1Rz54`oV&4S!xvsdauN z)`}G}yGp|sYlK?8V?wQXYHgFfuqOiuBAs!xL;4rOuXar_n}4P%dr3Z{TmD(rnrja- z2;|PCrD$ZvH0x*x%;uiX3UbQUP{ex*XKk~O8k)?}4;x!-GCat_tCS||uJftdJh^Nw z(ZXp}`3;N}*}d}eVdI=s(AvF^MODp@9#)m{kK6~%_8X0Re)P(C?wxB%8p-2?ND+Zs zyt+9D!BOQw_bCT*->nRyx;ju;W=S`6w|KaSj+{-4ahXNG+#;XuycKClEBYY>_smy%+;;6cc^zfNZ;Efj0F!0n{42V+tU}(+Q`Zn zL_o=$HvKo14z=D$jZ5#h-yqR%NF{F>lhV!(O&^qiIQutadO zFc_5o-m58P=94%{k!UL^clRqAeb%TYd-$5X*Yy{lO1^H0U1d%@_BjwS@eD;?IONpR zxQ{8|8QaZCw5!LTvSf&>Pw{F$diSPe?_6haV{;?vz<-2yjovMl?L91+j3n&AtV81p zCsLg)o0im)Mx$1{xGvcu3Pk_vHf$r00ZGKyNly%juSh zPLrABqvgkuqaE(K>~C&lGMAu9McA!RXp5vu^pCSS0RB)D@Nzd^-7~`3i0z3V z23F54;SoIpU%hQEP>k#~061$^FTeOhxvVl9ApmYEJ_#ZsqDNaf?+UWh*0TCC)PUc} zWU_yZ$`ZK8KmsdJ0yO#-5|1{2iTnK)Fxv`n5ND|vozjmRmUmR5Krb^ekr$tQ!rU=n z0|Ir;+rXtR{xMK>#y2W|SIBsQ>L2P}l&$5k{_=W1l%@l}{txF8y>0bh(ZYDC`!Jxt z4h%}F3 zI8yP94z$Hu&Dt;T-Co4gXGeqWQ5I`=Q+N>U*3IkFP=PLq_KD~(fl0juIaw<2@ewU_ zuS#x`$!G$9a#Oy3JjaRq>0ycmA@PRt{J2x4fb~5{cyuitfiew~;ce;TgZuaUlgTtZ zRH@T@j!Q$5EoOl@aK2}8`yWf^Q}jgTz=K&6zbareIS8)`ztf0rNK%XQVGwW;d+9p+q=28ayJh^6=o3 zPUj0-T+{)9Ku$#88Zx&sl)de1J9}j5nCyhJ-K;D9K5#XSMSQ(}V1$4-7M#x-gnCNR zne2MAc}maVryRL*#2yyC1d%OD0yp5A z$8{42imp2Tp>=R2utZw4ld8}EnRX5eV2S>JpNpJuRgH_6!|;FfOvvbl1uft8QkTSF z{PWC5upAV~fxTSe@>u^?$&tydf*_OGpBElUs1pA(p7&n*klwmsHvi*8y4ctG>E>(8 z4P%vipZ*;k187SE4MyW|-!@wxTj(F&CzGKCL82&V&|;L!{X<$r-ov1a51GTSu>QSZ z3=l3Zl^=}T{~=~8(xT11E_D4^IE+?WN0gv^v%r_@m23J|fgKLf&SHjzFLaU8NmO-O%k z?FJ%LK(9EK%HhC{zJmPv^(zc4?2rd*`IFHkkQW-IbTbecXJC-IegXoSSgMD|QAY$T z_be~#<=Qs$afDP4bXq)2%mJo%^Z9(lQ5;S8zr2ll@E)wQ?EZuxSjYO`8HBJxfnllY zKKmapS!_x(+xY;4NeSGV60&VMG~P z3Hrb=sEC_wGku>-05hHM@8u>QlVzyrlT`VS5CTtu+Q2`W=6@|WgvyY774}{&;kliA@27Ksh?o`{bb)!B}gD2KnAMt={S876bKX(JVNq4J?)d# zw&eDaOG+b6L8yJ*3(h*8O5mG>a#?V2aAAmbDzLsdfOaT>+9(86Jn-rnMyOrg-NW#j zhFwrlacKr$HT9=dx9v%%)xsN#hfnN)o7LH;oYrY|$nx<@txk-a)@nP!P;sLrrrX%^zLGy-*9eOL53T^Elj|J=^rCUi)U1!d?t`Bu&^+8 z6$jcP1LtF}*Fl)!@8_me>Xzgve+<ca)wEBpy+h+?Ds2jN3*Ow@*fTwlB9^5f{snvP3O(DNigXsXEMWT3mEybePPl z04)q}OCo{_B~^}gsBTuuTR&aV@3kD0is{X-$x~p^nYXvq1WmepHOWeMpBtaa&uA>F z7HWbRs(z?C&vgN$ML`;;+0P2}ToTA|(Nf+#HSF2$J`wEFtJfClK#mG^pGV%h@?rbs zdg;zF=fy~R)ru$IJ!;PaLBPQMB^KYbE53j#zm8Kpgj2aQP{c9my?P(o{Bgm)U415a zkYmxd{?b!DlJsa`{}yTf^2YX+_%(_M$?CeP zvAws*o6A4DT$VfhATw_Xl0}OZjl4YE64Oytq$`*T3Hj|Sxq+;l8S_>JkGqJxi(6jD zW$z2)NHR#}dna^$_alnNjz@)_tKxPImqt7cmQZpoke=!X2wVusPu*_GrMp5>0vgrL z3=aRxrz2!V6r>(q-HwRxM!9I2V_^nwvLu3}2FR@za+wTzeIP8(J3MXcU z=h^!ZQ-M1+{4Tm&RksI^r5hUwpQjhM#oZ6gCpL>IrrzGie={IQCNhWhMOKoSEt>A362*`Ea+-@?(D9Bc8S2L8&$gI?%B?`XOzb`4zMP$P9dPcqO*`hbjb2Z4-m8s&-L{Tf(sGs9ydR&UIY2j57(FFw zkvty~O2@vwSvL#3u5bJ!{F8$tBeS18j3Nrglh;m_iyTQVur%TAXPUkob5);{_fnIa zqc9W5wi#Wm*_lLCbmM2k^F-H-1q;d{RMBY%&m}${WXj_7;DW6&+)*KChJ8XB@ZmCh z%dKMfX2hc?CcF+e>S}jPwQ#qvrxgF2IroHszsvq&K5N9G=30%O?F1|9froVQ!2Y-n2T`gvNx4=TJ3nr8n8*GWi3#EQX z+t8XDy5x)RAw#^iPoOmH%Xe?qdWN`*?s^-Gn$Kp;efZe+-4Xm4x4$z2%D@EXEfg<{ zMqca>DMBO)TVrETnMIFSLjRnYSR|8eFbcxiKVV50&J?zyYIehJgc^Cg-{Z}T}J1&9*2KYD9yCJ;OY(rVmFStddxp&mU zT>(1(1Qag28UN#Y6C zQ~KK{;pmE_Mb0lUrlU+b21NZF)|Wz}P{nNXG)shoZfDJ-F$bNmW}WwoW>wSHfkpg4 z35Mo937z`c+Z-HY+VPGi5X?xYl;)Z(1;sP%k}^=-axPQYmd z9zp)x>sBE&QqimQ%RVFOhS^|k>FY24LKhf%{K+u&STmKoXUq1rYmwN_XmUUE#E5g5 zqjX(F|0NG#D!>pzyr7ezm(cmsdFDW3F^qlwfLiE>t~a59cp**Bt^~dPfZ-noDvb6% zQO{OIjHqMn`*)CB*bmj)Yy~+UzH53@-1Zch^-{^^G3EKv8TGSJP(2!hHrit-c!qhb ztp=qNiI;&r@!B5P4fq+WWXO*}g>O_183z#@0Aqzn1%$)hgGIxg8vr8l^SVsREiMj+ zgXWc+96>}4RE8X1_nd>8c-CfiKJ_!F%G-%#a8f3|yIZ33DVz!Pi5|dcvJ7Nbee-u~vCDRtt**vfL3=_|m+lEs9%r?e|R5Aj8;E zXr@eb6roxADb9oSDxF648GVIcedj@bEqC9cXdTQtmBojIgM)4j)c}EN^d3A3dmtjB zE7lM7bG0*L!9?Xf?bmF}P3h)>L0fi4md`RYIOiQ6DFQvYN3sjvf>$B>25l!fv1Vy| zwA89?pT{E=UaZRr?T=^glV0BR4Dxe7p)=InC>+tc&$VVJI<-Fx1(t#VGHtKt@krMX zR|6pXk+XpE)4KT(<^uLqtP}H_%D7`I1>A z?L)iB2NsAyLlzrXmykhvx3^HBr_3~*u~xPF98I+wmj6>fs=VCjzP<|My@jU9jQWcY znD%vTybk7LMUdV#-{m5TGb$1yv6xEy0})!vcx~?f~xv4EckqiK2UG zz7M=p8yUoIuIu!R2;9^kY%{7>2Lyq=CO zZk%r)4&_6d^X2n6$q(CXH%^Cj`;Kr_9ZP=Ec!FwbfoMPUAuCs*Q*At1dcYwWXB|MD z;ArGUc$a7$!Ak?c8kqv>G>{9DoSYns$pA)9UhzE*8m#bh@3}9I1%XIrK4XeJMH(cA zWo#}{E~GiO)b#Y7z#a>4Z!WA)_7@gll&#|q9kgUM0*{h}KN=e)EDu>!N-Lvh<<>)q z=WV`x{bsUpd{=9ag_>HyT~XPSc27&m%(m$nB9OK$Y)PlBw~>Y_`I4vt#Nk7r)(8NR zAIqEt>SgX*9(9p;j-B{kOt4RUqWYr&(MatejR`+yZCqZJ^TE}w>ia0UdxV^MyRE9e zzR`&{bW0D~y5@mk*sZI?e%^@XM9EXxgaq}JQuh$xm3#-{@dhIpwxwmb}TX_KWJP7a}flG(^k0imDM4>>& zsM3oZU#d6IDrb8ss^y{O*lS#B{i>qcj~5X98Y|LUIi zAY_{1AbNVmxSddRfr6flXF{e7YSKDmtl1Pn~u> z(D=_RfrU{%&$?PF3S$dDczXUjh|*wH@{fa8YVZFU&?8u3bZ^jNdgYTRwJ3(@VgL9| zyq(B(Qu*)SZ+&rucHf(=?ds|R>*?v$m+3W$XFzx-CE=hyd!|49Q5>N=lhJ3wnI#;@ z0+H2Qp}Ra~MMdn+Q_u}hsS3?Y2?-|4@Kp|C0rx|U%(iVFVVyj-eAt@0{;WD77Jw>= zmSL%&=c;3X#Oz|tFF+`KtomsTi8lw4jFwjTN@oPO3w3zy4KqD8wIEOi!1#qux{hPl zo6NeSoipC5go&AXsNUIjg+dkYREA7z{X>RC>X3BvC0E4R-Jl1+t6h{CcyQDIXJgvDS0T=npYVZxQr$1M6kyP z9;;z+k#a#J;sxS!J76u*9Z7+yjD{L;M7=XmsIHdG%qQLDHqHDkjqhPN`+Pnn1^*<# z%mlC1{DNtb(#u107X&_!bAr%>vqx*Yt5Qnxo~RW*bj%w-Z>f&f56hq9m17D%$J>z7 zX&Mb%sI%tB9Pe2aC@e9_HEEm~8v3`U$HyD@4u|Y<1vKTk4xBwE{%kn!V=|OYC>lXf zROP)fx$IWoltqQCSoqT?imVT!q32n@<_B?sP#CUQDG$CzAsr0%G`06hnxB!`9@T$? z64gd4i^o1@T7B8mno{;Igzhn`(K@Nib+8Y{29!5@p=M`5M)-iNWzO zpuBAHD(BK)u4tM*I^tfwX|O#wLA9>#)VoxCezD8`L?y3kAwT6%zodPjpYR>ZrRf-A z5jiW8ZO&`uko}mYqWDisZ(O#LUJ37BBJpPWlP-sHI_Tu+j$k;3i>Y&VZ-y0I3vg~| z>u!G~Sp=16{n{6j2)FJM%@#3{Pp6ucC&-NAk^4&Uqp-P455OmjRXSeo+(T~(|v{^ z`+CP>;-|Hg!)kNvlb!1Fiw;x0R3Y9wE*1*g3Rzo2|Yq8p&65&TB;HKWTj6<7Iev@WvG1h&Cxqy=JrO&!upj0n2w#7*tlanq2Cqa&Z(e z$*)-C+2~2iSHa5~oK~v=-w@>Q*Z1Hm1-Bss8fooAE?*rY|8=>AdmFA*En!2WD`t}> z>@45yV|aJBM|+Li)iOC}quBB#sb1;un?4@9>Km^*8;7mi9s_d9gyg+rzf(#8zs{6$ zgw73u>(G9IvUx#WiX)uA&69W&9Es^4ZGedZ2L&&g%G~p!mKMjfO4`WD%cnP{J7Bww zTe#JXd+bSGq}LwP-*P!jN5>Leh8RM-2L${BSo@=QCBJYqk~>b&9J`YcX?q9gonj1O zZ%k~5#cOkQ)~E9x5LPAgE9Eu|_Sc0`?|z~d;1lJ+#Pmgg>4PQo z{^aP;BYQAR>hz}X@W4KaHWHkIVsf?3)9+RO1vpjUfrzNE^2nxPSWfwOw@itRZse}1 zA8S|Aj&Q8e1LW9&X0o+if5@Bh;QVzW2Ts=#(vt~G(Ii2Ss(~}AJ_DXqyMGzrUnBZLc!JGPk ziA-I~c&Zxz!;n6gZVVQ%`aqqtp>pCMJUd}Q)r0q&2)rkWbap3;DcD?EwBCb3s0TYb z#*1~Tel`6ebD2V(Pxe*QpNY`?M@3H|<0=Zvav5Soqrer&8EE*lq$1qE9bQbZDrxuj z$z2tpN`ITQfJ+VabFb&R44y->CWZF_%HY!Tzd$@-OEN>ip_*k)c})MrWItWpU`R$0 zFM8_Wyd?wU|7hF`l$i>+0!;`7reFVnT|ZAomIp|`bM$Q)vo|t~VW^Y7z2t4j7K|_K z_Iq$4%A!5G8EN<3d$2j$L65*XVa? zC^&@4wp89_i~#9{Ju3O2f-8F#0Md&FhC7L;d=~sSr%C{zDq`3>Yw81OGj`QrX|@q+ zAUb4yKdB*^2@t~rwga#m)Rff)T$#UN4Df{o1z=1mP}&a({O9-o?OZSssAg83XjJ7l zkjV@IMzn!LuZH^s^lnoaT3#7FBP-|+Qw4j)qW|DkFrH~hJEU@WWmAEu3BC)xQr!rC zJ%P;66uAc-AphVN8YOK$)A#q{7$}R4iz6W?Z(sUo);YUlay|VfFKb&8f2e5YP!W3d z&k6!h7t+Wyt2eRmMMV~yHmxM#<;C9~FA~zz%UsHkY;?$dJhgoV8^pHmd3$v#iaQ(^ z!}y1q+6aEY!ZxjvNm5i8W(eyzd3pJvPg1xv>Q(T7Tj8aoq>!9k)KX1|5dH=Q*RY(N ztdf#H5Vgj!c&TnT*vivo{$n>6U^Fel&B1WeetFLUqb5=WEGYJF^}8uFFA&S_j3DeJ zjo^7_z0#rEo50xB+iR}S2?Xd$-7altwCb^d2;qCSjSTju&tG(+c2IT?8Qb_gp9oWNG@XVyis4$2jhXX zjp6K&A^-0WujoX99K1bi8$$D7e|s+?e|9jR;8+*vHL=~T{95X-_L3+Vwu`2Y2XDGq zle_gpe_tP~pk{u4KF-(+SZfsM29XfV4n9s!P7~()Fs9I0aUwxjyS-UXLE0?Uhs9mQ zg)mc7N_-u~gho8GIg;ZZm4gi1_87ulbE7dhnhvpoV+^QkV>cRDO+u*!M{Pt0NE&u% zuyMxIDu|y4OgQJl$Xl_X4o--$OiL#NET0+eb$Y2?{q^+8d{{|gVOyj7HGC&&4C1>g zVQv<4Nwh=H*Zz0Rw#7?fA2gnoB}O}BwwK013;9I0SmOt#*7y4`s=b|k@25Xo?=I>y zLYf@sWYIHbPw=XE^hZfrT#_PZ$C;56|1U0&!&X;KOr`V6Hc1)a0={?6K z_l6-OVm3==w<}8S&47`z#zc}vj59xYU@7wz_Fa$4Pcyrxe%Zkcb5E2SPd4hB3 zff2z}uopMCUubs6ffmU6&ebwF!gFNEQlRdho-jj<%D&~$9{%IZOp>mnK&A)mh=?#~ z)411;{cK&Mu_0;|hrC!*Z?;_)No3ic;A#FS_AV%;>0FrF~qt-fBZ^t@KZc4I~dpVy>_6F z?@*Jcr~WF&y31Wkk7NX!-) zzbL^958&7=w#0%gPpSOF+ay7NWO<2$z;E%K-yYrd>5HLy3s<|Bt087LZO;^}|1YSR zE5kW$yX`Bb06Y-y9nNyENz8xjKt6r#E#e-13v}%fiEKo zKX2<`tJ!Uar>xyX1zaYHx%%&Wv4xUnT@=Uj(& zhv{JOY4Skt<3kKbaj!g!?#K}OCe6caOfH>?ni`<#ot{3{Au>n3GgpgYi|Otg{w%CD zbi!x__nBPpQ+|kJR^t1%N`1PxgdQA=#BZwcY=WB%ps_tsM;=j(nBA`{)vsHX8K)am zwlPbBerhz5bT3xUBa2XCxM+sO!u|w~-I6N4RmZkV*Y(9s@@312_M`1B?sdx7J706O z3tP6W=zQJF@FKMAnAfD!5y|3y!#wO%*WeG?Kk344O;h(>Vx@lnLo?Y`^;UvT;w`{Vqx#kJ%d-AIZtXXHIz zN1~2=_L{WR8K`bg<3B+=z#0y;hKzGGD)2J-#DMlv=-9ztitTkZG|rep?j?)7>BN() z&6H#>-!+Dq!`Tm|32J~Sy&-Sjp4HZi0mOib1Y}&B!Hg-I)EnXY$_Cr98K;bl;)xKg zYudH_5=gn@!{z9agN+M;s+M=oz;;Ij-=!1Zaj(&JvvaqGZceH+7Whx%S;be6f&JOI&lL`b++&pYWYYmlI|JYflEJ>e{QMwIxhmXZ@L zX0(^AxFzxC^6l^r0gOSU2CE=kuv7sg6+ZlB0HP^SvOr3-p?08<@$=i~F;gcgJ;t~g zoAj=^?AD(2br@)k?m6eCR*_fNoop_3I{TnH$#yH=TjNk))O+G5R>n)k+b$ad9Y&0t zU($?Qo++un#peHH+dl#y=iR33SzDy?;5JkM9+nCTwd(mjGTzcNB%4C|wFoc|Kx%2JSLu&{ zeE8B#3D|b-EyBcqEfo+3`hT6Pl>U(laFrt?dv|oCvsZb5MaxltKOP*7dSC{X+AkO# zj)5Bi$RsDJHobI`gDj!w%s>E8QQ^=eNkB3R{zP4!UAg7B0;I?x6T&oS&rKdni&%?$ zO$cisa&t>TN=X1GHHgz1u8<*4K{-?j=z_49l%OfpPPcCP0E2$e(w(t;wi@bA3UXL16j& zk>X-ZwGR5q5~e}L8KyA(JAiXcc)UL~_Tw%*1~xQ!h%d)c^1DCRy6*SrWP}KMK4zVr zc2-A|kjvH&Y!ITF2-st-6@ATXVjcM_uVUl^#eWGk>(neV*Rpl|JdV=%$f*W8tcbS^j^PHc6lk5i&2@GomGm-Yx|fV@5# zkf41k8r{R%u=qbBM74nD1w5&QFg5Ak%8VPdG4IgvL*``?uj>#D6aOS$BIANa;kn#T zCb1;WNKj#&96mF@ohua7SZ{wjL|pC`#j|~!8Td00{-AVZ1)AlwRM9c~hhL%wVnW(w zW*L4oq5MS-!W0la?jg0ok_LzfMgIsSG03=h${RX@>ps3{@FdK}LCj~?F8@DNnVIzH z@nDwAg$V##|G)|WHUV_~12+Bn4S;H_07=X8x;;44|F|BA#$i+tQ#nx0-1R(x#siQa zLQ$*=E%O#s@IAg}Fu=A^L1>9Fa(&*xeE8aI*kSI8GGSTZe1t>nH~K zg$c#4^=adUFq=gqdV~r?0%4s?iwUQ}Ieu4+^TB?jAz@S65%~*P@z2wxUI9K5G^9t# z5%`eHJUvQkYQZrv=mF8i__pO)yJjWX;l=d!!qtEW3_s@2_yXx5;jM#;4>K!KB*1uY z3dVv@PV5TRs}X~Og8Y5xE~h^r8kB5Pl1-=F1G}K(0^mySXFTuWvB<6uSbRRAOiT(4 zPFWotRj7C~0@V{oDHQv82`XXsu)^E(>tM!b+`^rBi?1RoK&Ho^qEyRC(Z5+g8eFg$H(n?gw}}zD`z9qNiQ3DZu$hg+^ST0i zwa{sXvXMnRgh`nnJTqzP20wgapa8H8-U-`;7A~Gyt{(`9Q}kx`w0_u~u4KmBnw`}k z9nA)CnQTK8@-yo}^$HW+o#^OjAGYHKs#cXm5J?Ppy+4(7lqu;4&}l?Dm=cIjgqZ?T z<#&^fBqD(fq`?Wly?l<%WpIf691wBRKhr42j)Wr%;&ZN1FzPjoww)4;wexgJ4G3m9 z6(t2AoN(4|MIxY>xnM7LGL(TR8DR1Iub@ak3+Rs`BFqd6-z-FbxbICdbJC}p@H1cg zm}+8OxcYTa=i^%qXg$i3W1Ub;Ja&U6EOx8(p~aJ~PvlxNHukB|(J$;Dz_%AOM0!I2 z5X2QCP|^oPOYUoMF@ocBJjA3gRgb@|+Y`XBjt4x-!1i^L8$Qx&E)~Gz^_!RGVJ>zvLYV2a z&oMACu$i~o+uQx4i<_=a#)*2|Ns0PvIM%VTu{)UDQ3q&B`%!M4Jm|%gCfzy^*r*(9U5i;I^q`{sjT!iFPSmNb}w8Ve97cv*|daG*22ZiJfcIdPc+L(01=5$7=^Tg zlAt&KpK9{<2hqHIGsZ9>70%(eOtaOdDkMeX>*`t)QXzBysq2g>rVA&+=H}eb^{~bB z+zBM-uER=jy?Q*UwkO+5Rj9OpnhVbF5+~>&wF&+B5dHXh483Y*V(s)iwg-F(AEWp9 z`L#_Guw7To<1D5Rb34*%nHe3Ats^vP`0F7C8V(tsHaO3(;#z0BP@QFmQSxrViG4^c ztv-Ya;QcQvfye{s;F9~|acgH#R!K>+zSMBG;wd@9qa>Xu`X^l1@K85A;@EV+b z%c`(Xl2iWF|5+h`VIfIGfp@Ys?2~Z4)KhcZPk%7dF3E7e%6+&bAALA3x;mOl(>&(h zu{4#EQ!3nWV0<@%UE|m?<)mw0X+y@}R$k&^#Bl`8c7sdrc|rW?*0urV*iC2mIw3Em z50TbgD~QRIALNar)o4px7uJaJ#nJ^QM46@|!hz>qtwdt4%a?VJ3J=@84&$OH@pIP| z#I7SF)w(ibtRZ{S4wcdUSF{H}GTd(h%nSyD5nVod%-vTbl&mBz`MmvVf4*{Vigj1% z0nK)Q%;^>^S^E8cE?7YG%ksOK^p@lGM-f!}U-myjd%x!IKr%IqDJsC6fwEj%=g81F zK_F~^pS{=rE*9vy7gU>5CgXwAbiJXNeRuA3e>uZgfB$y&t{ZAL&qg}0kN4a#mjQcK z%Mzh3)ioT4b1~GGPPDO3)`tEIJRgshscGe5fK+?^VVwM*y%514(E^drnXwY+La2Q-TU&vJ?cTYJ$K%I}%ce6>o_u(7eO&6&qIlu9qNu_z zUz;X*HBr*ajOHD!a!-GX(V9IWC=XpWBxbE${4t7Y)|Q=ngkW_vESlpwHx4IH%YJ-{ zIQAj?>em5ig|_!T#TuOQHBQ;?Jl)|I%3|mGt)*h`=^>R^)f?Tg9jbY7X_=E&a-zM| zJHr*3qCY!)XE4ZpKBF!+)31E;20Jwi2eW|r{fsi}NhJksSX#5zYI(KN0KV&TT961L z9PhWvHr?bD7ZrslW7T9T&;OE3z!hjPRBhyHT(lv#s|ZaJw;q@!H|5~=BxU{ettl)X zT_&vswU0;43_EhL-7;^6{WeVd!1sg;2HZ`Xawp3%g<*a@3rZ=x(t^Hw?Y8@t!q%7K zg=v=+S9~p)K6{C-se%zUXSl_LjZ@xw_B*mw(&Q0;y?8!sTNivC&7?6;l8O~W-A9$7 zvU@3&(`sHU>un%ux}fMH<$8TF*31QmvX-=SiKaf3_}N)N^9IibcLUXyv?bGufh zh^B2c6Xvyer~7kU#-;J0EzFn0svY~GYiYIW)y0Z7Rfk7Be3aHjSNmmJSNX~zCNEH(fUzh!I8^zy6gzKE%*ofN(DGs5=BOzMxU zR@s8;nLQ5JDK@8~ee3C-1g!x`Vy>r01mclQ1npu-8M)N3MP)NAHF<}zUtDWV(F-<@ z6IBKO z@2$&G`tCW=w zLB5vzJx;#G_NITdXdopd-#|u)kDlVTY)(#&{#>1X&BbyEJ|Y?Z@t~Uld=3M|%iJg9 zCE8Y>;~59*ISD>2?MW9@AHG$Nxcs9q$QF@+V2+(?Z8os6no5;9HqhYIudt9tp`e;K z$=K!gO-flBY@iTTflmsDHKb%bok%*Ld+3;Lg-`$CK`;Ge_IwBFo>Y<9w(2#bF6(JG#%cb3SCQW`#ll= z?E80vR$25;Mt1gzw}S=w`FLeKFa+KoKa#ZySPfrr$p~v9banw!r8?E$My6Tw45rQh_w>1%X8?|F_5S=VT&WR%me@4>usE( zn!&gd8z(zbic-(vAerEob9){^vnQ2*WQOny2uF{qv;E#xQTRH}*4mN1ZsA0Z@MU2p zzi=<-!PziB%hZ(*;s7lSIQjNJ{fib9Ag7hz8m1R8m3!v&6s^5d?p)(p_veY_>^b6L zfHc6vs+JjBcJd9TIsFyy2Ad-fN>>%kZ!k4H!#*xOV-Cf(Q>B(&?ppO0a$b~wmW08* z&Y7NU==|zG>lC1xLy6`cJGjT|wyBi+6+<6Z{y(n10xGKRds_(s5m358Qo5vD8tLwo zF6l0jE|HRM=^VPHd#Itidl+J9_(tFOz5j15V6ouNJ@=m2XFt#0`#DZ!@paA3eI6eR zu!qF5YQ{WubW)jj{|k{}wwQbXVQ6URGmKd$7V?=p?d^S>hm02r zoYHaZ%l&Uw{_z@e-jV|y>m62CPCGhaTE4IhI6|PCYGaK z)$fiehEySUSUC}Uxa5Y&$VLc+;)@JU>Y%~&uv`PYN|ZK27r5o%eO z+v~1@;hX(gcP$*ii+dX76tm>U3s{oa8mwxaJN z{+}`X)2rri!uO{^ra8E#Brp}ST@~f@bJ(gfhQ%TKUb(=Ol*x5rcr`lZDxOx6P%)d7 z*Qw`Q+&q|BznO=Sjk_YYZp?16o-X5fyuN&4p-!SSDJ5iJFh01C@nOANik$s%51U^? z)7vcXNS8j;(0oTRQy|BMl#?qCB2ieM3@f^UabD8daI5!MhI3lTR7Alt0|!ea55SWU z_+dOF%G=EY)G=|DwuoLWet%NgTfIPM?*h}iq1e;e;H(Ae8pnNk;oc?-b5QA9T6Nm? z?%duqB{LgjX<4b+b}?4+jvU*dp^?8pP?!fCU$gkVDo&8!f~iO3#m~mZIb=QH;GiR8 z_q)VPYZfO)$0N+G%*;&t0a*`OYwHqS{9M%&>>2?^$rmwZk#E6?+6NbgLbq{;VFB4lct*V(P9Qs5|A$Ux@k)V)G1{dKk#cddJCD zL*j12=b-bY*C$#8efV!ZU0t{KT=wb878-Hq;rp}wCE0LUo)By_n7bzy$@&m)e!e)+ zL_MD0H}L_OW3i7BhmA2EtcHB8H@5zrq7pbqNj^c%=d9-3G>In#NPnTjzhiwmQXyPB*&{7=inB;dNYg_m5w5$lN^63e$dkAkz}v~ZGsXH&?q_!sTP1$O{0Jo~7~ zP}p2st7b->EtV`KBFc`b;`I4ZWQ{D#Co=M`K9H^7_m;K&9{BuKE94cG=5wo*p?!l( zcsJtxpru!lI`9o$pRe`hviTpOiOD#{_0tXUgQF9oby`JgJdZO;Bt75VpT0iX;vUwp zL7-`D?>mC|DmrITA7kuDq;d|!6MwYXhAR6Fj&d8xu?WVgL}wsA^+vfT%a|p;SiALR z7F&&}pT99RWa+!tw_~mU_}0MlP?84%)U40j>9cu^t6Ca(rn?I)RSGy4Cvyu1KA4eY-p@a> z|6E&t^2Y2)pM*y>ObI9HRVkxUqxb7<4t7}2C?Q*KH(U+PdiAkO%HjSE5&EKmTmu-O z?P2!orJmp2)5ahzS)cr-4ci@1k!Q$;K6Wz{h_~hdP~7-w_=w4kE{M8oz(K$(dp9tF z1vxZ~73C)(b7%>o>T@+dl<)?v@0O^g59DoZ+3OFPd&uzxEvcy6z6LtFk;9 z)?$CEyaw{OIc`1(i-POX3Ujt$yhGac%EhW_W@=qSk%e2ueXkh)GB3`y`T^QFQb%`$ zI4bi|eECn%$GC}NBt9Jt<0lB_Rv~R}iJrFK`mu+fkGq;0i2Ukca8Bbi{pBy-FMdo+ z*GJvpap$f|)_N&i`soMp)ks>St^PFIZMz<{FcF;i_> z(z{ghqp+S%D?Vn}p6T!5_^Sge5nRF|uM36BHz?RP&SFK=^^Y$O+G=SODia0`5+chg zHpfz7ZkU+Cg{6KCULI9AI!P$=Zth~5fS)Adw`BY0CYx7diOz3!n3C`p770$u)NA?8uh4h=A zeC+PvM~@w6Ek=VHFOikhxi@(#$Lpc=rQTlb5wbl-iPrSfjP01J3clrXL#4uPixKMA za=~_z?LXfmHqq2u$ZK3SV~A*cKpC=&eOWAv^V+VELCv3GndK$<=-+uh z9yHm$hH*6!n+$1%(=fl5vR!3HfSZ3G=4J8B+>(X$n8=bSdYRSX#W~MdxsBJ^JKjoY z9C%Fb+ZN6ha!*jZ_Dasz!fdiNQR5%mAA&HwihVi7#E)^40Sd|E z7M!F|Np*Pq#T~8TJs0$3O!SEmO*VVoo0AAjH|e%n8MduUhkXx(l}$quK3(EkWT>pR z?sL^D6mQZs0aVld=4*xKZ8BDlE~ZI`e|uf9av#!@va&L@;hqvDVGAmzmW{J?1Y+LQ zuyoWH*@Dw9b#W!trla(>3(g4CW;pKzt5FdRWz;p zYPF2SHwqp1xxi|8DFq)fSAU? zo{y$vm?{ekANyg#{M&L>pv&+`)1SV|S6xU*H1+|})vO%3nDL+g=^9Cq_QZIZPmAa5 z%*ARt6L()GuGdC!@clHn=#LoGi?3f}gLS`pq6(`qFh=NBYE;yq_f8|RNNCvMP<`l2 z$5b0>%I}$C*VPZ2ESYKC(9|?t&RXe>jPzcc_&C-jp(ya|FkN_K6c3b^aO|(>?{n2{ znQWeRB-wAxm<5pk5lqH|f>O6s4SN|`G0D{1wBn7yNLe-f$jON^Z9;|8IjA*G*Z1#9UkJt8;fPirg>Cun zgqGM^;fJQ9+Ni0~!V{_Al}~fr;^vohB%^>5`}mGD)H9XTOH3y17{;jzIHgkSbRIC2 za^A-%(2y5szhDGeYmgm01zI=MRE)pvg=M7wMo?e`F59^Pz02{o>sc859C`GR-S`?A zRp!7vR>K3@K!}8s!7QQZ{}bx5j03qY?Sr=2Iheg-Nd>KWo)(_tAsKwyvj1>)KVemW ze!AX`UTEMl)LneWPHpJ=uame_pzKvL&VcMVf_e-zpFt^YmIyuor+XoN6<|>Bb%+9FTzMEwmr@%ag6AyNgO>^-GGyA#|4}ToWnT8$i_IXC*(_c*S0uD(Z()JX-L1y8snoZ2@1JEz?gh)uW2nSi$kc%B9EfWCmC+J7KuIoC zzfwjUp?Ld#>Uat5_#6Lj1XUR9MZr)(NV|Idzg+#_hWC4C5|b|RTjtBG z3m3XExxc2#KR*MNu*P#XT*k%ZQ-4>k{f~O=#DHaaJOoH6|8wOZc#h2Z9Mzhr-HT#6 zT1EIDw&<_$x(La0k`)SX&Y(wqeU$%jn161Xnh;=i@NH1u`WeyhG5F6{5oIU-1t0F; z!}<4r0%>4s3vGj;0Wba+&xf@FYl3gjmC@r*<>kLLgS*9p${2R*>o@%_qS^sb{XvVYe@t_&Zw%bdoj+1%$nFf)&F0X$Z z&7oCt{KVhRJM#*DYye%>6lsRJlLIIilP^a6PcA@k8J+X#+V-;V41q1bk9}h}VtIMo zejZAJ$I}?Z!#vGlL-52C72qJy&AlG>UF9L&E2k|h=(I0_U=OR&f!G5`U%$3~UKz^t z%<9#O4uo;+bTLMy%Q_-{ujD`dl^30)(Z zkEI4~Zy-g>pbub_6cq( zG+jFJ21j{z;RB>>h*;im#U+w26^fp}2aZ5H6VhJ5K5Nipe>GpceQnCg|+eZp&q zIW{TTKB#hZYn;SK^R!zu&#_yasnSUd@{_qk7g|XFvd+B{x{kh2=(5s)96RsZ$%Y{m zb9cb&N#ANRwp!JsB42=~p1WJ1%Gw;6iB-|LfaqKeX;jfr4hK~H__97vt#uFma8$1L zb}}Pm{p_(5iDTCUbV4axMDRkNk3hJ|=W|e{wk(EiSL?iUwdJu}cMVM08Q*aoLCX}H2M$M&t|+|h`w*18>> zk*{>x-`h6pF?XIZ-6;p1NSE=N5W!P6U{y5Q6E7^Zcy0~%dRQzQxSGCjA#}s(yNu&f zG#X6Ds8XB{bc1JW$EZ53bjVqg4yU(?d^4*TO4Oej*k&W#$q)AbQcmBYy_nhfc@nL} zPd6`dZLg}Buf_~<#nT&C!=6P=tib+tT3v5;-0sGg^Dzm${!r2R`yHR71fcevaidcL z4)|ePUCyuyZ}#Cr?>*3VXK}YK{*iI95 zZ6819IE{HPT_EhpAH~8CTWp-%RY-0d;ucrAq z$|k-v^>Da-wTX`UBXFNfrXT#}%k~epL$}tenex3)?t~a+zF5ht>r_p4L@$$Ax-L3a zV=xkI>-Fn5I<4=|&RULd>vX6~FUC~pNizW0$?hU;H7Mv!qbs&9L?b3^@Csd21Q!p0*6U*UQ zxt(}BP*hNVWP3+gvV#ArtEx0H$o@(!*7u6dd;!T>>5Mfk$e*8?v3gx?XQ_5Sv*0E-RQo5v?ndtTo#n4iq5cZ7*ce z&vo3ncvzcZAXKRn^@n5pO#_L-$@oF7fJ5%;(cY(L`kUmc9{Mz^v9w$)onn=~5p*nQ zUHFN!uH)}quFjjd{f|$lj>0e-v~1D6OmeFgk>_}T4!L<=k3 zS_5F5u3hsLR*LXWdV`KmE4ERIIU4ZK$%UAI1omfTL>D*+?2WhC^|2qR)Zln`bh@a% z1Ho68XoD;))=c9WU*eib73Y;~8jZmF|FQsN^#TCN8_Mw{x>t)PSKX%laB`VmyqVP! z`N$*!4=bwpM|3sR1^g#I6I-7byldsn6S6#!-Szyb$H@4Q72BFVAeJD|EGjgV9|Aw3adV#eLnYZie|jf-b{k(RaIc7`wfrQ+;XY3*r|7O!8R1tXLmyP|s5i!}0TZnCzZE2qHhz}HU`#bTj}bQLK-z5nw0M#ir5jdiuR4bTv437ws1kV5bP*#x<@{8ujODD56wWx5ZU-{nb?P zH%0AD$CFrF<&$|~!W`n|{VK%tqWib=At6T`2llm8-9i`+lcYal5}1=WBY}NuonzoC zt3^>p4WQ7`!ab8Ylhd+=YLLfi`7Y~3wV#=MK$a#zlJxJGn8*cIQH}erc@oE20P{nC z3G#N~X)LwHMu_vdqtU3IK>j1z>cs{tXQ|(aK4<040(%rL9HANwmZhY|W!{-{B|8RJ$C?;+ ze3Nhjmp?XpT&l=uWv#z?l`(smjSQ^NNWCZVm5h}jQ;oh2U7o0@V=~u0E4?i2d8-yE z2J52 zbr$r(tJNYQSEs+Nw6ccSYUJ70+~v%BguT}Q5`>aG?5z7^e^$Gn?GR^`L#T_u*hnSn zavV=-fKa9VCEy>gJ2zgW83JY-?ERE__*hHm1OIr|iP31faCso}L6@*H_q9Dq1&sv5 zOQH}!v&IzptRX+)yRckXo}c}Z7{LaGoX!PlNVs)}h(eP87mQmAUfh!ur@_~%W#5tK zRM#Q5>lmD%1J8|SsuM$%<>FMFtS?Bn4S_m8#0ox9Sro~WsN-sOm8AC`Og59peBYoD z8-kX;C{!q_7ti5DEZ4285@g)}rc`cSI2EV)L@wYq?SO^))A$78PAo}5;dZqj zEj9qm*jnCWr}I1UoRw&7p7fi07A<}Dfxm6_vJ8~?+k1TNi!jM{0)dM2Z`wE;nxskkNt$;cGd)OTqgSgjvqTF~+8c1rwm!AbU8e&!OVy*%l_cG;CRUw5J8 zfR=H*3(Lf}lxmwlBK6oP?^nKreiAS@Ec$c{G+*!f(qe>4%Emf@#chN{-u#6t@OFXxqG_5AYT(noc@ z@B3pi_XiNo4LJ<>>*>pewd*{0@{W>cQnJRylsloa)z_9FQz}=58p2t$N~# z9n_q^xmOWwT`Y<-vr#nphKV{~kPQib8h*BZ{1|S@ao5@7wq10NcUNen2+M6cq9^F# z&V7BL82WDM{tc<$!1YR>`A-ASKBPSOo7UUxB#M9W2i00qz(_hRHKOs0wjn#LOVr60 zj4pY4o1b)dKR>?k3eQ;yA&6bJD0v$yc)C<47R8#N5mZ>Du5Qj_o`5I7FF!UX8(&v$Zop6BkYN$Xqyl1B|eLcaxLBJXx__STqXDqe2FxR@+lSQLD`f5d8yDHI{;~y2ObT}>RC`t zG5@4sZDAq;)Du+K^e>;MaHCC{8BN!Y_Sn z^&NK9IPQrrK)U@p`F)#Bp8ma-Qa?gk&8+DRd^&4gvc%@e1#S-nSGF(N-De!u^sW{7er4v;P_4A$ z>kHdijI5GAYXy>DV-NkdfVP=eTU+iQP~)*qs%XCjNmq9V9~aP~8$DHjxU6|bS4#o# zMX%9KAvQ1M!zn2IT$2AmuxR{MxxfIgy3M5O{^t6Jv{5^L&+FD}qk>srDF)xW|LC)~ zV_x5%V@y<=A}um{nVOILTAfZ;)Lmcs3-@*rxH=+X$nmtaJFkeuG38S#3tDCyI?app zq{mIdWi;<;8##-1n@-H@+r5>EGYO3xD`*&!bg#QfRhiVyF86*~*5ou!j2Ciqtg|g7 z(|}E+%e?0i{}WdTK!xkO-E}Q(q-uPPVleXvH0{;jAg1 zufhsVJumgCssBeRbuv8HedYB%RTQI}J#yv~iEY`@0oxmvM~HP}`j(oF@Jz3sySQXk zmqP1CHcV&v&FRg#j%M)hdiLMK1nsb-sK$e*@f?=StCz!^jl$}w})VxPS2xgUD!j=$+0;K%GdM&VAkw6-L4nE zX%HA$x8!p^+J~x<+i&v3RIY*H*!FmP=%-H1Y7|h`x2~CCi6!KF`@a4D>|@6W4c=^H zkLaxK0Er6-Q)L=fF`z6OkTqL`PeTYxHG8d%Ku=FUO@UC~>t zVqzjXvw4P4DX%Xkk%pakjv6ax)(jt>FYqAZJzo6z!b-rx`Fs`MFA?GiN#|m|5YDU$ zDQ$D^DEv7b8Fc58D!a=ikN=@|pb*E<8wtcC#xD~_|FFwHxgsxsFjq>8I z_Gq@Z3XuIjOG{3K)ZTgfN19E>Qav_{FoefI>pnWpcV~cz&2>Tlhd^zlHls z<2K(ZFNUC#u)S|M5#*G(i#1aGfD+>BK%x~}0ySR$f@3LsD;u?^RXA&C7U(F$T0u#P z`*8YLIbL_j>c3d+)Bd$yh5r z8-8|{m? zmTjJb6&p^v;z|Pdj@BVUvCTnh_ycl|tc`oX;VXuYPJ-DC2g3mI<=4eg^7hknh<&{#wRBkohnt7o>)p!sqp&KVfB8udDx=IdAcdN4f{K-pCkvk4*|qLb z|GraOU6C&8P@qIZI6TB3!ytq@nY6D_uaxrDuO_zgDPF^|iO!q_PW`L)Iv$W$^OQJm2 zgDRKN!CfsEzEoNM1h*DQZb;b3craxEt{UxcI>M6uOKkt(iQg3++;DwSSudU6&}ula zN7Cs|%#y8xWq&!~3I)fJs2&-v({_DdLc?f%N8PzNT%UIq8vD7Q1Y;AVN%lcQBdJ=D z*Fw-bQDMTc&L1tac`_+0(Uo%L-nL;PNf{gx%4#u|xkpQByTUFt$xbW;UqMPJL+;X*)Tc_+Ah2A$%w>;i3$B z?w%+^mCWf&I01k3(}QC6=>(E4esF79J%6=F_X{<@GdP+h*SA9et~HGA*!9%*O~`(J zVfClu8=j^M0=9I;{y$6b4owE?liX+nsX#+;X6|l%=d|!HT zH(_~AZFt`o{y7FgbIgj3GHm1B?OZJ6% zG(pgO`#@`PE#a8wQsd;ci(~fTK^tzI^SsYGg)4oj%7p1f(>3(?$z=HqZ4a{PSI-S% zAVK1;tOVw?WpvLjvZ=LA_}$MVRatghw*sW-WJmkII=2wH@Vp?`X~LR&r9Hw4f9FH z4N67FtOmF)+F^|lXD9H@&GiEb%ckL>`#Yqz4rNRGDH{DN-OwuOn4~H1!Kv*Xfx#=< z8x_srJ!q|83SIrqtDXYNvjBQtRn(|_3yS4-m+-S~HCYJ-UEOz*CJ{%m#=Z9q1=-Bn z3<(^5xM$^QkY#8Pe!6-zSPfaO()ldTQdNbvG-kxja`6BKVZ8^hO{dRRQGZHZT6*Ny z+?$MQBM|qsiImiP%`AYmYs-437Ll>!43 z%GrKd)}z0-JKU;x##8JQ=zRfFy_N!@@H!#hN z1947~A`gewBLbRF;Xf(I8KTnfF_&XwXrUMEO;!ddZ86s_m|!dnJ#lcP=*h>+EKtR7 zaSF)pT&Dv^fYU{ncr6yGn2SkRt4gYFNSoe27mOOK~ zOAT^qdd+q(Q@*HIIhS1#KQ(=xmGnNQM)oG5LdJBQR~go0+0PK)i3Cc%R)Tv){Vs8* zpcA@tM~X=e?jq7fpGC2cvDFWD@0oe)zDyq5g0qfc?XTQt_3;K3!}nR(kJgPz<+uZF zAAP-u$qkc)B!kXCjMd(!yG{5;jhJ)UHySns9KI4|s93J0n@J!y-h)4J@Sj z9Hmyx(mKaRoijt93y`O{D?!*BjGxaE`yr5I+QhR8dQ!7pmfRs|OH)#pymQhm6EL>9 zLcxSvlU2kWD{Ancc~!))_O3HgMPiwU*g^QE?TB2j>Bkz#a#Q5>{s!HV-jmdY#|2qu zp2OxOxm^gYLW z>O+3d7DA)qSnK)88rt~6n}p_`V`z_@8dm>$s#^WUaQq~mBnaA9i|1}7V-#q$dcSXhXn*DV)vVh4?BSG1oL8A9Lr)Z1l|+k^)CE=0c7YS_%&vQhTjQuT2) zxEE3W4I*e(w zGZ9>%gv=gcSlrV-t$KXAT_=5bF|5oSXcUsL{J!`>DOu3d_A|j76lwphH-+j_wfn(R zr2A&^H0w}rww;~fcUbP0;b9S?QG*|3K8c*Q<;B^?cQ>G-xm(4q@_e?+Ob?MNzIhm&QedtQk{ZGmo!trwN3VC>n2tK990|cc9cEgH`1E5Q2*%&(RbvCde-A+50(Ti zM6q{;kMISXc^C1hCPpiz7Hyb}!!R|3zqUybeN$8ZI$1iKZO1U29jr^189IrS zC913)jUP`MYf~B5mmax4!&X#u-6p``yN?~#Yq~fL`O*4f58Bwcy|Fp;rIr^u)30Pu zVV^joJ6UR{sj~P8woS8>?f*D)!^9jj#ivucGn+d5+7qoJTBYKae<&}B7PM{I;!0FD zRdT4mtvuD_Rm;2>&knkW1)zyj=a+|;v`Ni$d2(~R9u7=++4WGI`2Tq^?9b%nXby3Y zN3@);Rc5)vZGxyEyO!+u6=5J+rMKHPV(@xX`n*fvLp0L3lq7GEzb z?NL?3XM68rn-zvicQj{ZVq<2s9o)IVG6tHSdUo#9q>5)n+tQvS+wQdrqnig4@vRkS zjSDA5@|jzXYUuDTQuKOKe{BlcuuA?hIIP39`gWH$Y}_WWG-OL6CPW8&^<&m*9Sh$} z-VrsRY+acb7r*{-iC?kp8n%VsKe+&!R_PjReUf*6?`sY2&Xz1AhJ`{)BCQ9W=_jsH z{_~!sC`FpUf&ifMxH$>34zM&)#xs|1IX2nQjU=UXyL7u~*joD_uUTJ5V;3Z4m659G zTdQEvrmtTKRo0o|E54M8ow?N7ZBQ_6Ge~V1%lipX++@sf^`pyhC73za8Ftag%ws>$ zEu3KzTu3h7saD9VP$errFWR5Bn~A+F02r_oG%$C2tu!;buJBc+&Uj_`dRhy)lM!UM zF!WvgW#XT|oI{qrLQaO$x)bT8iL?5pO=z)rG<-%?UMetF@9jk9QY=6h=B!b%z@llT zXE&=8)3Tp`F?QfqFJC_Vs5~Tw=Z&*y_F}J|R4@1M72GKw$Z0dvm;yV+$N%ASHfKVa z+gk>2*67u^J`o$@KYeqFoc}Wwtf;9NF|N0qBNjS-)EH?n)rG)>hl+SnL})3|J?NVM_S1{pDm*nF@FDh6ZBt=8DOfKbs%MLd_(7wyd=@IHVqJT#daP}$-$p=NP}OH&@jNsl#WzCwP-iYqXQAS+xhmf}HP|dEDm+lY`4@W^H6lr-~Ma=UR+8 zG*~>~p1^4;rSf$=Eq3rV7?JL1>F-{%!fnqzcKQCG|8l-EWzfS=*&4PY?9jJF8?qT( zE_FE@Spp~EI;-!|(s?^KWymp40UN*$IQx!zZb@gN^Lw>REFt}B!cq)hmW@;}0G2ajsvwv39OjB%6KC)sDTrh3k%q@W*czwK^(0_3PR zdSo5OIbOihI_qJNGr{KCk(aQz`Qj=3>Sz@$1)j8j8suGNaeL{}t)80lU|TsIKJ0c- zca_{K&c8Q-@!%Wr`;b4X8*lbFH1NkXHYU zlK=3+$HJCE`1nn;*V#P219BMKUWbR0JyVH%Q<*Rdy|CZ2wBFlrhbRuj-Jjx)4V(K` z-Qx@;#MFe7TFJ#+3e7^o9!so{C+pVMY7u?Aa}Q`~xktSw%f(?N36L0)ju(p9vo?UFsU-_YTK@O54A>fU|TW9Ph0|^b6^f9QkLk*Mq1v{> zIX+$LhA9VZHR{BaDL+m3=DE+6n9n+HrlpUtNA*~pFzd_krGES1-vg3n{r79t zRI0>;+?T0^5$yNuSa2fL5>#hW@5kkaC zyRcY*5(ZC~tolA`-;@1QvY7Uh z*C)e2f|>Ikqb|GoHiRo7FMQ>gYXZOSE4DZ*8NN2zRaiQ2y#72RlhSPp zGR+q@@G(Ur<-J77OyS4TJz0tICQS*!xijdivZDNKW0PT^?i7?ILnjj0hc|w9Yv^hn z%Hu9CmF&o3GF5fL)8fpTnZie`X|Nii47to|v5vM+&q~kS9WwzGIRkhM%_G)>JFG2y zk1rXYHU6&?(2FMxuSl4zgWWB3;$ zoJ}cv-=ZYuc9>kB)Z68qN^0O*KLT(SM@S+|%(VyPs=Q9pFA^aUiK+o(5!cNS`z@7o zz+tJ4&g8VkjkDP+uh_KMUks8FkQTD_^NwYV%V;=?%I?F;)|mWh(y-F<51&+Mn|?5C zbgHn(wAWlBzL^fqgQg;}X}+TN*aj-DkJY~(rmQmRrY*u29i8y6>=S~}n2tJA;K#*G z=NJFD+2>-MYem9X6&heqFKm}|5=7KP`P$Gw-OA{)`aL?fCfWG*1*aIEoX=(D^+U#S z#z|WCbh07a z-XS#HnR{*O$)IQ8!eArpnf;zC_d>rmP7&@1Y{igoA=b9mKb_8dcUe&+33DP(Zdc^T z0bvK^ahuNQwy?VBJnS;#Xb#`(@9o?gc7x8BMlL<^lgiN3)jw*I7SyHT$t6m`YdP!- z+X+6>z+DVL;p6Hou|pL6;U4l!W7=p;7ERj{jhmveLyIoko9*cB9jKEQ6#GkQxi(W~ zg}e7|c8dD<4-qzT)Y(3hMJH+w5td&vVLH4vBXPQxh@fD*r@Fg##V>n1il4?`r^T)4 z^Amf8K-Cb~Q%}3IkxzKEF)uW1L@9*_AoiXnjt9L@y>B|rfw`MiF>hkfj2y~ zLqEkWoS)r?KlS0hgTNFipPmTxbeBBbZRYWygt(qp2&cX=CezF5h|hCIcT-tkLX0=| z$Rgx(=*Z}8&UP|zN0fW8jN#wIodw2Xd3jX|=I>>jz+Lu|k;>eZX_MT7iAz#g9LMHs z9FUTRdnnW7qix7nT%h1u=L20p$CED=esBHQ&u1&2AePmd=`A7Atp0^^d|6bhZ&w~2 z8Yw~?-aT)wEA%>1nX%#*ZW01sc8$*RqmLDMMf9w`f72OTMjMbkSxd$v=`&>?bd5BU z4rR^9*U2QLLsx!z80>ML9M?5bANhGdjEt9u^6$L%))U4+1Ca^Sl(A_ zwzitSzK+0VhIEW~fg55DYdOWCRW#tNM)g*OuTp*4c9X{*M;IpfbM=Z_+>K+HsVnb0c3<1kK2zN^l)TGr#2!09mqgb0d?5B=pDkNv70IaeNLx!>XCOcqxP^_-fR&iBt?4PG7~e9A(<3Ru@@Z2&}>i9 znGL7p(e@@wk`!$4!7RWu%mO^R?+YoVXW|+y$G|zBlyrr&to~wr;~qn_f>f?g$bLq7&aQn~>thyRzffRrY4OTSYz1i(p0C<{s48OR*6fNr=;}N$43f*VnEGko+xH(%_;;&FJ&ti}+z)xsI+gTcxM{Ja#BMP)r;lB0%fNkvS ztK-6g`S5dREiuU-$F!#xzakk#8p)Dbo)s)QIONU8WHp_BkmoW!r-ue(gr*Eed&Vp@ z$R(G|t4(!YykPOrTXN7}>QInt>q!PnUh;jxp=fNki}si$4`n%{nevwnPvRVM(mP|d z^?@)-juA$p0TRmF`r5wS1bt_e;gt#uLGHQgtKszTJF0eu)jqxtn|SX^5TXg7VGtHt z|0EpsChN474?>)oBBX*o(hDRmrVfL|ZOETB8vNkXJnC@nP5PDBL!`YQq}93K?yE*f zZt5==mTk}+Y$azSz=QvTp8?+S*!gs>yp@YG=u8;qo63p|A3ou?3YEWBlmmWaS&&IV zQuHQ?U7nW}$AE2zCG|YmXGZRcP4S|7p+Z@k?UE5<(@^3!q65A|`?^cmYZ7uej$y83>6ufY57+or zaK_+{r&~}@&r0-4ppK(@)wRWbi8J+CTE2E zUV+J+tzJ~#LPjEGO;U0gbe6ovDqZR(BYCVG`x`>fqgTBa>7+@Nb%+M!ti^zc5a#5m zTZPYcbWg}e5v|@H>CcUO3qJC)YmXTksC-F1mG0?n()=mE&4s!VIyBS^A&;SUy@(n$ zXZ{VySWz0i>?-MTR=eL+R`wO`Y_wY3-5wn+sSAHzK92`DTRd#P?@J2lf4eQkowqsw z>;(_De*Icv!ggI)+&zm_SNC{Wx&SA{l_X-kZs2k>M=F{3fOy(hBAS3jiWRD{0i4gL zjt1PjHb_Jm6(pL~VP{WAD>5!-j0E@hL_+yxI_0q~s{-Z>7b6ytc~jDlL*pDx$P&+! z@@}JkG?@^5#>FBtbSNGhD&vkv9yT?>Pn`vKGr?da{n|mDAbSPQ!VDHE55Ify_N;H2 zx8K>3fM&y|tJ(LG#1y{Cd#~sV&h32|N?AaB_R&wb2aSSyi#%{4eRLrOuy=pNdcAsz zC#F5wB1<;r^au3@ir^y0%Jvi~Q;v5*yMskeFc(h(17<@SJ;rg(|Ho`$XNyR`)WUFN zYi-;P{w8iz_z#cxn{CaOdM*Z>w(_#YTNMABp!mbVe#2(9eYnm0cErOk|DV4<7kr5? z>1vtR?^Z4UUjU0N^IS|mGV|@cqg(2K5wI6FYimpYy>phAE!qFq046IV89RSI-^kd1 z!Lz59~%8HQg|G5jU_x}=6rPJKbP<6br#k6f?LngE1Gr)zlNSi zv}kbrMD+_?SkTdfN&jF7-&g${JL8$`=@Eww0~w-+!8xT+DLUbE_gKoi7#s9)RTY)b z!%Pj?GVwG}v(G7TZy7#s58?RS9XF)j0XL;NaIj#_`C+bkjw+s(aTOsf3C0}pSMrKD zEY>sGH?F@BmynoG{$=*^Ynh0d8FfTtB1F6AQ{(i-OdANIHp;&QB=i#sYd#BIWqxg1w&}1RIjsQsnWPbML1r|(8w#rheXi$CdE$S~EiE5acNkvp zLLD4>y4>U>-t%58^#2w2mQhu0U)-?g0Fn}N1f&HiY3WAklI{lS?rx;J^GK^S(hbsG zQUXeYba%Y_c<=pR?ikM)@0Vwc#}5q0K5MPL)|_kBZ_c$gL!W6EmXdRn6K?&!!>_VN zRof>B)Qh2lM)EJ-WfTc&DVV(MWZ&%i9>0|u3_eAH-}$L_*g=Jt!H+Di9=05SogEZ? zdiI@>pub#Sl3R46bE(;d-N5zh_GabsMKB(x+OF!?6>nwFXn{|k$Z^ePw9^8Vu4iUS zT2vO}X#$vOTJNN3j-6K)ca*ZeJ~}4Z4CAV=G24(P34Xr6X4rmU-Tyf9H+pfZFLXsk z{aKR#Gq*XWY#aYc?%^M(w!b!7Y+7Yuptb(N_LGgNlcf z0@yi3%27Ha=NI$%p|Y_yFUMG&y_Rt0+K}janTpg%uf!N>ro4#wJ0}>qu`V!XhpJVZHD|VSVa}f z)0_2sI`sP$>QqX=aYDqQxNIy+znF0=RmG=4C2A5v6x(0PYIXZO^IUZR;$%xN=kPdP zr6rKY(7hi>xx6T3){)kp9)v(f=`fiVX}B3< z=%g_z-5Kbror6-CeBe-M6L;A@aHVkRgN<9NKyw^TfuNj>y@g-{qj#XF-C18|xV$w` z%2!LCJSIixE7S_(b-aAuL!)*ku3KiOqGPe&@CW0B?}=37jNYaB5h@x=qSP4nkAiZv z@`sUGlJ!TPD+&$e>$D-RJEOM^vNh^`{Fb3K$hqC<)X;ETf%n>jVyZ+dqANUk`Me;6 z#|yXuK&uIlcDkhFIDk8QT`lQSIEmc`(O!i=T0WPOtcZ-{dBIyMuZzfaM=IxiIeVkx zZj)^lvhB)+0uIF48HdgrwC`5dNTo|HBVMh=2akZ8W}-6qdO9_Y-a(Kk{UlfE(*2PY z3-tO2**M9aN`#w!%3=;Ivw5h$(_e9^SwV>CsxLtQ0-e)d zzu9#PGfE!?28J5m2&dc}W&v(whvM2W+9ic6|D9Yl-n{tJq=sX*jdIVcw^APV$$G!) zxi*7kN1KXhP?EN=H-bICWTHl|n4TI`sYvx_24JlZhp?{LciAQ_^rlh=rOn7PT$OsY zg-jaVy()5(*A=;>P%JS^IX!tKg__f#KRf2h>s3L>JiQPSHhym|iR)s|v_4daMYJaq z!27nRok)Q$G4O!!+-vXJ;9MY%?@2&cy~Hn}tG5@NM$-hOm>+(cEil`TbLK}7Yaa>( zo9GR{`i)@Ad!+l$QQdhgn{emmmjPnyggt`l=;K?G&2W{ev3Hg(mOOUg5b7??=QK`1 zR+7(-QXKk*;dOA3LTER8_%9l1IAuHLu4QvCgrS_4R-fSRZ_=NlePZki-75ObUm^6| zJ63=wJue$~YZNQQZn#l4_r$cujZ^GLge62ZqubmrOHwfvi5<0;ju~O&cQ3zIMA2l| zOpQ2ladO^0QID2(ci5I+MiFlLH%K^RKM#Gh4K0^C>2z#d1sJ!p)P7Cs@ zz6#o1_A^r9i}p&Q^V+*B9(1m{h`q1-Qy<(peU^L@oym7V(};_(P_U*hO@M3@zDu$YPO8mRgOTcHP8&Y#!sOI_PZ4=^0!?w2&$wBz#G@i$neLB8E=sEH$uV$d1238<5D9La zR$%SNGvUf$K#}5TqX*a^cP}~EVKqz`SxOyY_|N`s#|eu!KXQ1bM=yR%E)V}!t2)U+YTSO8NT#!? zw2#}cRiHY3kfKO&vH3+%C>psI?D$(u^M-|{-Ku9wW@wTiot#!&?iQC*My36fh z8mEj|enf4=^vAP#Mta>5Xmnbp0y<)=)>uaM3dWYNTApsaAD?%jGOC;TepT>ZF$}}* zU=aK=t!L;v=|=vi@}2PGy35*Q=G^oeM^sTKp)qKp=>pY+lJ(=S$I1HQ9JDsLR_4V+ z<8M}fx9m#rpC7?Y)h{&Pn!>{whVEgVWkw!Z<6CxaGrbs_53oB^od~JD$l3jM)AS1&`xWso_0gd~O4=tLw zHfhmTKIy-s=r6^6jwm20dsPZ`+w^D|Ehw|IIUj~J1ucND0k*H0+d^xQg2R8c#gvXw z(-y5JFIwKfd<)!;z0Q4vo&LUdDBK5Le#UkG>XlfSZf7zA7`Z|B5| zsbC0Amuhcc68JY4Ow;0a%~&Qy*K0SHhxcSeqT+f|k%CW1yj0VJ*_?m}Yvt}Juoon%`K@QwDQ>=A7O$tCA zW7C+&5}kij;Lu>d#$)u;^~Cl>JuTpCp=4rW>hoyBfr{5vW^-?KVjFKsfQ$I}AHR%b z+W7k9>X`X0e6f&7vqXVAvm2|zpz1)P<>WGVBaat{>iV9v=d1NH_Q;zNXjG}4{&FdY zzWCNB9ni-Jfq7bnA`5Ak&4t$VVA2<=3Ddmz`pYuXT3W101GN^8wSMiX(Ce1p69t&R z&Z9%JJ#HVP3xBkmU7mOYm_G);v~Toy?Cy#4Uk+)%R(wB+6S!Jx&5;vQHMGWya)M^LfOzR`B}bT-iRy4J#<0!l~xBNk|97^wfA^B zchTU9yYZm1wNy$YN<8Jzn~b{YI(v)*%i?Rnh7Y+vLLi4m$&mNyTOTftw#PmM&~@mn z{z#iOi{OTX8P1j}wWA@hr2#sXK?(lwqGk~N4AI&IlSd$?EZXtZhCk7mcS`oi@{ z)`nK%XhUxbf8q&>CCe-w1;)onI)Ipow5mUDOR%>;23P(*@h&WVl*>Kd_uBA41pe^P<9`Q(Jai^5E5B~%?`@uUIV!!6w7)=5 z%H;Sst#0woaJR|r;>DD_wh^^Os-IJM@PIBGTNqDg$jtm}GwWQe!xD{lk?73iZBZV2 zg!&ZhU0FvjR02S|;7(q;S3)8h&qdymRK;AkIJ_6@fdG>e}fs|KqMgBVx7hqO}?_J*>lz4(=M;8^cp9GF?Y)wCBb=%IPM86DttfxGwNN| z4*MW5WHekby{dIl_>l5tH^+scYqMkME)o-HrG(=pf?E8n*8k$$MLxfa&iA_?bv(+R z({TkNfR~eng)T1jrys=XZ>4?hXlN+^sRaPJhwv@!F#MZ@_H9AH%i6xa)Zc!PZw5O3 zUvJoUu-?NMsFpmdjY16`XY{v&p%IwUVBRu>iORl~3n@X2p4g>N>q2bjx)@KU=G7?k ze6jtyemex!s%W97>Zx+In&@2jOW$*hELHd+oVe`!^AV}A} zRCkL(a=qq!?PTK5Wx z=HESpMo=!q+sbdIeU9XniviyMfi3>}-IhYn_r*75eCtmzY~_D_JYTjkhF&41P0F!}G$vjXA^2;w zeIzkrL${>sHrDP^yZ&}lJ={X1RqzPGlL7N$gY9E{#ak5Mgh-EF=XKV!8-AVtLtflr z+tLaq|9oScBUp}FSNX9qUd8G7WprBYPqCkf%{utj!1^D#4D;;eDO>UN<*u)hBY;KP zGH>TItD>&=oOm|jHhZ-w_)O1N59y|)gRAm z%@OgO8dDJbgpYE*!Jk-=!SdBZDuWdO$rR+bvSj`DsbD!!F@iB=l63n|SqlJqB8h`) zyR#7AW6YYO!21aTp_b+FLNLyk=XlUGy*>Gdz=~wB!;>>hwJ1K-I9s19IPs|S1I#j- zcBs$(8!rKlgar38YJ~bucwkv#0$Xq2=Nyoi;P5;P)TAP=!LZypv?h5=kTBod7 zLNjtaqatb7{yO1k(5j-JcEnu5@S~UxL%Sx%d1u~yA1C(+HgE6;_PhSD{lg8%KGG+R zQVzm$-bfCVGCeMKmueg}nk&=Oi%*Gm%T6I%UAKi${N}13k^CNC5a^Ns#!7=aWQT$u z8xPEyqXdSu9rAJ6%T6TkiB7>|xlU%Z7bG(3_oqPZZ5gZ*yqT3!^GIkLeDlr5$6u}9 z)wWnH7ObA~2@7XsHqg_<0e88w-$#z%MXx6HPhQba(6zf=MLg@BYbCH58DLt|@`tXl zXDMiWeZ@%O^?H3M#qT)_B{`pn3^$knJuww0FPO~pqJV}o8OLGTz$TW}Fs-=1@`>eLI_m!>q475&7Wd`k5GVER?%8^XL#t#jlfLUFnRdlZB*W4Dt`jqaIy zWzJ@6UHGmxt@cVEai{7ROc<;DUohd>_fnDNWfXn9v<>%zn4c;*1F`DHP_;UL55Vc=I@6;6Q6t&uuOl0oYmNR{x z>9u`+zn!R)!q`#MD)mt%q9^y9Dy#>F1o^o{g~#%YEga7KSBO({`Cj^H1sf#fu5_?4 z+X<5OqhKr^ci@h`Y(c%scP?bn`c%M#I5MO`pR?(RCdD7{X@Y90??!=le7RMP-Q`6= z*;5j?ygdDzgC3^idU-jq$pnaHPm@4PAjNEQOx!rwi>?3jXcX&kAv)l%QlT}Eu z?pNaDyM4%^@w*DgpX^q*EJCU{dh2jLoldg+;Y;@ppUl(}-HKM8Ctnv?)uerkZmQ9x zVXL1tnOj$if-7b?sd0f{ILXOjSi+<)U)=A81#YvXd~aaE>+D# z3%Bs|wJR1Xb~};nlp7#6MtOQsGNeT>zbFvnuig9GoaHh#P?)c775QyCZzf=dhe?^p z*gPFS*jXu9oL4f8mRF2n06UuH$tc(N8nP)XtAqLd1>x+bsPC593h zBq-#wHozfCaq&tuw2gMi&KmOcDRyj3OdvXXSwhe9I`jw+cW21v;;{L>Fv-hM#%$+3 zx?3la4dVx}j&Il*J>R>P1XDSkhc8JPLO*)K-Jl$qkO#HXi6oD7otc7)O;*p06&955CG%~HaPYRrCrtS_8N zuVC`{;Hr~QAu(H2U}!rs9D+{Zn>xV0G@AO2pQ8oZ3Toth~?2S}W9a%G<->J+udjds`IMxVg>;qFTDueh4#e#M( z%RH*%=`z6XkkO9zjd76(Lv5}lVx!N&NXx`~W+VvHy5FqGp@ERMB_z|&6sLBu&YjKL z65^sFBGA@k;Rl}|TMJh?+0~oKYkcyT)Z#3CY5ptwgOj-%zpfT~(%qn9_>`$Nezm+C zH7=?Qf%`lrd3Tbd0$8=e`qsIKcYQFDL(#cGj;6T(##&rwkJ*k3hlcq}QwC+wiF8cs zZQ)B<;%bFEn$rMUG4+<-Ld&n$0z{3|L)}>|9J!|FI7XUhF9+St!BCBIX}3zUsdWIT zE4g~twM1lN=sEzFCgOf%M^jLAVbF-*@#7gFCR4<)sG|wGx3(PUFAi0 z6k1l?hpy;%k5Bdv2>68+ajD(hP#5vw&rUDTt@(16T_y!q%ePs9ngJ@Wwcf?gMVdTD zfp73V!EV|bIpFqCs=dr_WlOfzOQa#SiuYZ&MiURW9(#j6n(xdwYbQNF*L7^xbrq>r zYn^$NocO`15|KtVd5C%E=}txKSFd#`X%4n#b;Y?L0Hcj8GDwm7a53Ox6Et2vZ*?&Y zncf}Ju&}l?9+?U;UFadKGdA%KVOcNfm(E+Um}37@l^6S3Nvl-$70wX1Mp%T!)c3E8 z>ls{i?7EIJZ)Pu#IeqwXR=Seydcrw`_%yp02hX@Rxouh3>D2vC^LIOw%~`ajm9){> zc-f~{xRb?~yzdP(o!;)>os;eE?Xj~d6$({YPBm04=HC`tqq3f=#Z7bW)%Wcp%I+Y)cDV;CH z_nS1B379gw-+FFP#S+8Lh@m=N-%z;Sq+~Scy1-gNbK4aONi;ht=i-#h(-JMCp=rB8 zb1M&;N%3oJoYA?AHh)E?Xb8#a)UEXk=#l~F(-7!>#LPC50ZpYNPJRku6fN|zCp-K_ z=&6tul-1vWY7pVAE`b#mMhBqSswdTXv62>EieD8>^LE`1XM)Un6CQt0FW4D`&dBN2 zD@&>`z4#kZ!xtzC>2{(|lsbZefl^I}ef=6y!TVd0ci&d;fP?${hHGcFX5r2&=EK}{ zDOqXYbvzZTnBNsUozv?aEav$1Rt}Q_+vfel5WRu4WTq+)yk!j+oL_8Ak%hP}*Xma~ z#NAG{UM(fZ=BelX-fLL~Ltat4p_A9O`eX0oea;Bcq$QqqxPN0ZUVptx$XPJ|rS}by zyY|}jahi_&3trV zMiKd1rQ)sdELAJ2Or^UWc-CnMj&O5Kwvo{Am>yvbHKw)JabGs$j&?Za&nQ5ZPY4&j z+w+KF$tUgnBKtKa5|{=ZB&(B`sE9e&qsVwHr08&B5#5`1xppl-LfEY|d*>W#@8JfLhI)MS zu+|MaiEyka+3+~ZqzQZpr1wgH6y*D?+tXr@HfyWqMW>^iRRy2$N*I=(lQfgIhNe(^ zXA~xyeU9Ubo{U(zoqXlTy8Yp{zw~k4q{$(&j6w7pS8qF4 zm3jteLj};S1WxEs`}%3Tp`#U zx(WNn#)b=sJ;nIM7R2%1!f4Op3QmG223;EMVD4FEp)^!xASHNbAy{6+OO7~TAy<+1 z`Xzeu_MGl6HpiK_k!FjDS5iMyH)U2C>tlh9S7BWQy|uWh{6dAt=zR*gQ~a9two$O? z6!Yxvx=dF_dS`ch8TcqpH<8P{-)Cy7WHGIzZ}5Dt%UbeWs8x?PXbf3mjtN zy#x6L20qFCB=Q|b&9GA7(;3SG_m>!H?33)2v+*mNqy5?9SSz&MtzLMvYzv4@XtZ6E zYQKA&llB<9g^L(j++|yznxM$$zI7MSixAy*Mh>YCD{EG@SxNS^oPanISHRPDdi7I% zt~E2eF{h)LN&t=k87QfWh42K<)c4KxV`423mMm*$cyt|PA!BKGQDK_R*u6l6tLhp| zayCsXdZVuX#K2IyN<>jz<0(R$Hw83T^3a*RKl<8(6gpkSdo3*l(nYzr=8U`2P^-fw z;;F&4lML(#=R0-3SdQ~ zM;b(g#Cnp#wX{R z_Lpi~a7g&>A$tU$jPD@?()0@=#_o2(An7DO|AEs_fg&d;3zpwxeov+nCNQlC38GUA zeo>13`UAG#1+ihQgHv%l#C;ADT|w)BDNa9?PC6$9;5|T}pf}AVlZqZQIR8T&0iYtV z3P7dsh{qr8@cs)y0PxRCy&3mKL%!-@tN#`eq2gV!wm$vS9REtj0tHrxGnx(nW9}ZJ zGf+Xu!G_)Yy2kTzK~}@`2e>6QW&$`US>Q@j&N(9U0j`lHNQ#1YH*@XcH)CCs3XWu0 z9Etvl-^@Z61Biq#=Av65TkA(;0XW^{e!$A8G|~)HFc2I?<#Emf!SaK zBT@e;g#u0Lu>-;Rzwli9K4JsY3wZo>fSN24^|1+B%qjvMlM3qS=l{-OACCA7L=%{ zs1q4U$S}MEN{9_zMMjW1iv>s=>`S#lEqkcMC-wj>r#J4}Rov7Cua1JQ5YSDcx7Zmu zg1Z!fS(ugs8{rA%dk`eX5bm`4*KBUXkmh@|(PoMP`+&ECjQe>3;P^~nK8`N{{xCov zvy-(UG=%^q&PMI+dGtH;KN59kE36$4OJ9t~-!2WTjW5fwPC^_nUC zAxI0nA8mAD%s}Iz+_7Aa^>$y zfOU8QC}Y&o%V>W00TsD69vGO2CWTIX`ffn&KWHNLVvVo9{x5=s;Z8INlBi#hH{r7g z${lQg%`-4y{_MDCYFh}%GR0_KuiAJHZaQQaoT2pxXOLp^{h0@5WG3vxka49a1?mVQV!ZIqBXx}SLiK^5{3NsJ@{5_)_6E_=r2>_7Es z4G^Zmt=Rul^IC5SR*2t>$wN|K03c}tW3@W&L*8q_*bM3%dic77{6}z(y5^M(4|~^P z>iO=0L;jn zZDt^?urzy^d%wLoje6?<2QU^NA#YLZ$!I2D;oKJO6j0v~&wDyKatd375-ysF(3Z&XDh*jUB}Z@ZRNYGZkgESZjgiMM`e!JJ(<;jqWFmoR55zg&~Z7!H@Ofx zy-iLk!BX}>?k>@7jT&reMJG}|OL!6LMPtI zkH4D7`<{E-`gXzyeM1iD6`y%^3tMC$OYszR#n_(T_w%7uA@xNN_8lguhd(&(DS)Y> zzr_ST)i?V{Qa#2gbRpZ<1blZxJy40m@@HFa0NaM^d`Shx6qa;&pVE-&VmEfQ$^_Is zKFIaFAl+L&@@L%ACxRg1fqa@2(eVh`0eS=IK6DyDjl#@~eM@MCc<)N#GZzt4WA~^mr1SOC7=;)+5h)jg2vk+n42w*3& z%Pir5?TinGX5{krVdJOm7=1pOaI@ZfQ7d_Wy&h(RduQ$ekeF{Z6AD> zZd^3AUM?B`_qi%KNJijhv8X`}np9)W~kHzdY; zN$NI{5wKV_-Norfu+4H11X!$}az?4ylv&BJP!iwVgZO$o$yev6MB}6>CCp`56!zU< zqvD(w21SB@@&ks*!jmk8?gYNc>)->F+5=F87n(o|9|5>x0X$e{F!WLLYrNta#D}Ye z|KJN^6L~X+<@}#iR6D7j?_q=9CgSzK+XP6;WnnV$)*Gd+M_m{UMy_`=y+CmM%OnsJ zIVQ>g+wrY%Tf9R8mD}6E_ysh1n1>i7u)w9nLS)1BDK!jP2>2PMTwZ+Zvj(J|8}pB| z@mFWxX?T2hX}llR4L>a+4cq_O+j7S7V5r_((=&fKdAT+Va8N((nhtFS!hdw(4)&O>65iX)(5bsv!K;x~#s zu#K?cE%^@Y7OT_fA2^^{f-xvCS30NOqNS-hVqKK^1;WjrP)CATz&TbK82JU|Upd4V z-Tiw(DX_w|j)mr6vxhDs%5L1VM~{%0B!u56{r|a(2S;K)$NwjnVJW)VXTzD&81Pzw z0B7Zs9+Mskum=}m?5l&yo^=ZV-e6S3r>F$D<{P*+4Vpzp(CR*Yu^}XDgR^h;{aiv$Dkgy1?dusp^XyU@m9e9%V-b^YuY2Y6VcrF zZys)X(>mZ`5W&~~w=Dx7;U08hpu=-wrOSd);8TE=fX)Id>Kp!wsI;yEj3GYkN)F_J z7s3B`D1p(~S@1VtgK;^(U0Ll>Id>4f(r(0{9T+9}|L&lC%TlCbBU8vLIt( zHnS)wu3~>WjCtIxW+qiA0dE!*`nCI5%>`DNLJAM>s)OoBm8yNx;42VCE+nZHIL*_I z@=#a>K~~@(${*v*&k){*eJ#S!Og2*PvXMpz*Fj{yJ< zt}qqPdr-&Bjnw={j6TDojhXzyC`7MddB`TD_n?kSAy?dFL2vM^^Mi2~pJKMY>~E}t zpH}RDXvX2c`XW8JQRvUB-Ldq1OOs9fcmKBNeOpd@Eq3cErBg!9_DuO zF%}f~lEd)x?oaN&)<1h`iTPzg>VWGc1HS6+Kmcpq0NA$=dk!N|4yf*W)^T1AJ3*9lRmzh$>OSHz1F zjvY&(xEu8gbNvnT$My+nK~caNuMH_7=rr9(B;$g5a@WEH7vJ*+;26s}SMdS zxyye&9A^~pHB3HkI8IZuhdgvbvR{&FbE%f)5Y&3#V)eJ&gXKlx$a3OFd9o?IzkKQH zVnIA?zh7SzPrMKr(S?s@eipB&i21^M>3D0BtoYKBYOi&hL)`WvH-~NJx(i>)i723P zgM8|FjbMhr&EHja<=3J5-;x}9(50Z56-_cYJRgMRq-|3HgSUxUC z?nf_AvAZm4eE(+pxvQm8cf~#&@z7%hS4}e`g62zY8+D@dDcRlS<-7TX4USFHGFv$W z)xYhbzuMx?tYnoH!Lv@j_tVr_Bp|j$c04pB3|trXWRi}dV^PDp3wbhfGO~nLN}04? zP(#RszGs0LZU$X_#772_ZYmRuY>RV&Y^gO+Q#l7l>u(+`*_sHk$^3N0$yr*kh9 zP)3V<-Y9uOe$?0m3kSDbKWkxR${~AWX;boebFxn0Mt|P19%;j;RM>6JZikLPDBUJK zFkN~BMaT?7W}!(c|6S3gP}5lW1E~AL!cOtiww+A%MZJ>{HnR_QPCCW6iw+Q8?p$_! zeX)4w4F}4!6Q-59!K>!=*WPs(47Z`rz+U-v_b-Vtu{2zvpa43%0NpJtxyV`)Mh}y_DdlSQ4s@3 zU)xq_KqcfY^O@JZO@${%zeOn-_qRt_Ik~($WZraT!d6NYEj)K@??mz!eYm@GzkZd3 z?@#;;`H-x78=(>VX$mv+v+l6|TJ}&~+4+04#!LLHrbiwQ9DqklkH(Berp@JD_yy9h z{5gh%d{oKW)T-I2MrJdte5D7AXb$U3N!c4KBW85(T7q9;q&|8B1engR2=2KT@NehX zyDIMQ2zt7B;>-_!`@WC_U1aOQ>0B<6Ve&r;e|#%>lK8h1Me2(1{m~0ok6x&}pa59X tm*Ja1(TcnD<=G^KS+rRDZ4@(r+xB7SDC%dASbB$0to>bD5fy(r|*C+sw^m& zMl6jT<=4?}>G=`DlpKoNlX);~!Y|me9R~xgf(149VE(rPG zF(c6)m5~uSKCXa{fuWLtS&{@T>HD7{NTxTA=%AXjM=QHSM@=ngVnT^T$Qu+EhJcsT zYCe^3HdjV4ZRYvo2QwrT6v~$`>*&=j!%(nD>zyAdroM)h4|3QnW1lS5msbF_$2K=f zucrJy{85!JK-7c$6!qcXp$zGl`Sa(`HVHAYMs#g8wV>u^UVJWlXw7hl#~%I?{U z@o)~gT)}NGCQ0}oPASAe*PuAQb3hu$IF*RU8KLd@GL#*1C07cqP&WVuu_pR}PPJ_P z`Qd7@5ImS8-uC{;;T09k1=bVBw1$o5QWwkImRYsDnPBEiDBKcD=%zl5xQ1S^~yIWPJP0&4!yU;KKIo{aM zjZXl6|FU2385|wrgwIHL&tX!q5`m?AfVkIEuvJBS+j&Q{kv3Dmb*9L_>{e%=yS-81 zl%ap8qPF;l2{HKe{LAUtaxT7o5vwKPZMk|d+Q?IuPxwS5w_BynJ7;u>^%QLAjB)lC z78W?|HldT*Ec3&Y>AEy=h6nq<3zc$M%`33>cXf5uHV^WNJ=F2QOXmaf4Gj#sIU{E; zVLrl;=w5${Y7@lSuo)+o-t79?NL$_naN<*WfymZu-3MtMLqQ>$Vb6To(BIgUbLe2; zOFI~I{VS3R5(O*4fJ8HF{V0L;!;RYe(;u44L`&b7*h6~oQ6Ljutba(7LuyWoWj0`Z z-;VPV(ROpE*$JRkTg~U&4Y!nV(Q|1h2(rd2?ZM6?LD}eFT-uP7bL!Q8GUo6O-Vaxk z`>BxDYk z==8kl%i$!}8r2VRjKe){qr}^ttF{b5 z*Na@|A(O5ii*F@bi_O1Gd?gOZ23hWHvE8hIV1Y3WHqjfxkl6VKVA5?pR@}Wgnq%WT z>L)YNmY^t}_Y_jLqor;v;@=U_jZfErc>TMYAK+8JUi%Fy6f@Ns*pdHN1LaH1=_Mpf zW2B8{I2TS8K??EH04AW`{% z8C@y|oUCR<*aMcIte9AyUqg6d4RlfAz;K(t=&-^Eb0G!TvaT2zWvqsdnK1lR|9nco zjrr2Fn#*_KdqL0tGKXb0*~U{<-}0O3HZ+Lc>-;(h*3M9r>ogvSdnxeOekup~8e?Lq z=EZH4il@ct7kh&*it(ChwclvCXv=L%nqrDC7w}$g0c>5`2$n8J8b_e*edAK6@tf%@ za87}fTiLrlMEUYS&nnOWpW|b z?{p|ksYG^&_x>4qIMcW9(e29E>>I`^Yjod<9-gykt5nZ?bfx9=n*P)Hg zV5J24yeD1G_0mSl^xf7G`_U3-js%=q4R|C9fz)lK`G~mkOf_I_eje}82 z=d$Wl6pZ6|y+E5YV{t$Vk-2XP1#>w@8beC<*Ux1}MfU&ra|Ip9NiX$B{3!<^iYz2= zueBFA>S2+HFzMf+eR_iHpR@*Pgd27<(&^+F?>2sMz-G6)3lut`J#Vxp-0!cOYaLB= zmiTu7gv$n0>KYLoioJo2{bnh>{YB#znDF{7%2tA3I-{5El`@&zuH|`4ZH`Zuu zH~RATer(Qe+)G57ZSNFOeFCuAmeCVphyHoBW=lwnk3{OrO0(6Q+dy!Pzxz{j?IBL$ zCTZ%HG8@#Hs&wysGX{6ejV}v%6{V^r?}*f$&nNL^X@f(dOu+u3BRI!&yh;YIrkUl7 zI88yV)*`wuE2rBoD)-7Vu=fyNEO&B2R6uJ7mC+RWOju!^@BYP>Crc-N`N#4kS}>H4 z@LcVVDzhs4fU*e6{9B3G;QIdqkv;==_QzMYSCJJpf(<)-7Oj)qI5(; zvfI~LgbMT5=bfWM%>0&;&%ZIY7(utcm{Kifev7p=W`!BiESmpt@lEwXxs57cA7}_2 zteFKsRnf>XVQJscn+nZv2FN-|vIo!2)`mzQHap(q<&Nk?WRS}Mmv$R6MJ;X$c>$!W zw;X2Z#7;>%FW*4US=b+Gm)4`P*OaamvgU&<=cdDG!(T$| z;mZH2B&NvTj8s(?`~{=mdp=RzS@I%S8C zgCH?COfy+wK6SxKY}wTItSx~%A;SJ8@l=PEkoIBua@`@Q<(c-CZx6#$c^W;E7bmib zZH~mexJc9RPpE@L&rH4{2X@(BvdKKnA8-Jf7zm%Gm%>(|vbWVbhuKI*GdFG$ZU(n! zI5!Wq?;jb&NeOyLDdQBC39o>i*xp2Ts!Q=EEkNGx3NYoXZZx`LD!p-9Y)heorc6_d ziL=IZIl4P4#>>&5U9-8HsRZeGo$nl@4)*pnI0o0QE&Pm9??G?766BzZ=1p*s&xFT( zDl5;$YEfxWMobuwp>TAi7mEq~w`w40Li-@625|XxQn5E^ifYWPSKlv0>A=*U9&lA2 zY6rqe&!5;JwO-LGxIp;cQjIFsCL=1Hkz#!PfUihJA>*y2TR1StPO2-OB;&b#qG^pA z%f!BGwiZ<(|FNpVW`Z;tBz`v*WP6XvD^L--pu4Q~-O5sis95||%uj*EUnSM#dNB5< z@Qf>lQ4-Yw%Uxt&HS&r}B@hvdn1xxYFz1;DQk)gN{}9fU-F;?11h(L%Z*XtOoF{S zLIV2PzIU~oj)O7tYnX^BfJ>Q9^nKEhB->>f>C3Uy@x3SFEojlcoQG+P zd`IIu41jTvgM1r)5(mfBm``bVmK1;CoN$)#EG&2+_B>L6-@jdZsM6|5Dil4S(8Kk? zr{ZiI;~=GcqkZ@5L>7*F4M${eaq1+IrvC=a^`o{#>cgdVuJr@Xo-y}wHPu_F*OPom zS4cCu#}0MtnhUfk>(w{;5md@kCjG@>gG+;h2Z~!#fudB|EMvXv-G*Xf2YzZlj1qPXWeVJqL17?|WcL z@`Y$)lBlSt8B7KLVrhbE;KfX_YHf2-7~xqV&0wJ_5qDKQNSwwo=`rXxE|;pCvd+6+ z096VYm3CCzi}aXO4?sioGV&5&)`-8SjX_ccEqb|~jok?=hh6uPGr_hxyh?*nOKN(g zcHa#x-sNi5$%?I3(lJ&5W96XVfYvCIthrz zdSmL>qFiuz^zRK{Dm@1@rct^SZ^Ffd3{Z}oU?jF)f1kCds=!AzgRu#Su>I$GZr88e z%G)`eX}t-QHQFYvQHdM};#>7u6kDflNy+CBkqtY2J#%fEef4A0g}PFK*oLP)tO28X zyMtWwi&nI!R{18kG0h|4^I!K==;OoNGxZQ2rgZI;f`C)hucx%y9vXT$Nuv^5r(G=H zJ;zL$yzq{?cSLc{{ptlm+6F^GFk340vR~ z*G#Q~&DT4Yub=5-%o%1RTR!J|=?9&L49IV9W?b!US@x)HKTB`(dils~?*;LMZYNNR zoaPMA;pr<#%gYkKMZZT{f_W%#Y884y7cFJ>zY~3K$=s$2f&(JC9f9( zTrqq=m^&=Un@v?qeS6CyYco6Ai($;j2xdk|RNGB4i7Z3pGm4>B*z)>1F}l`R%*49E z{49=d)Q^Y#=zA}`o^56O5TnIDPd1cLS6wXJ!}!^9Wjv@aluFAmnuzu(RY6Nx%Q8QI z<918%;c)>p!#+E8lI0R6b%=!y^_+^mb+;~28l(5%WBo#=is(K<IJ&=y5Cth{ z$k(&C*YXC{avjE=qnw37Y}LS8Kv5iBFu+q~d@fF?1i{R!TZ0JEg?w2j|FNndWD4ByjpHAZ~PLVk-JH?4QF>2wGG*Z{ddeNr14yYj8?na|c;(^#C?P6b;%; z(c|Z;oqL|lU`KQQ^8XK0KN%bk< z)XcR_ESO!*zuR&SGq^f90fAQMW!Yd0*qTRL_BVwhc!To85)(_C?*>lg!GX>NtF{Jd zaZ5!?Ri^ankLc6r6n9%|*^sg>@l74j_7HS5MDh37;3_VNAj9Tsh14^PXTW|`XI6=z z$cbbTNY_UbVPL%-dTx*IL|%q(*U{j1O&wOYq`;aulvDjZm{mJY|5Oy-rHm^+dvse9 z@Z;CtEmsuj+p&UFYGl;8-B-|5xLvIw$X{#vpHYYn zfxC~f)vNg5>=?NM4YXON>gVsDDgJXSv0n%Z+_ljx#+(Z7#Y<6RVy!3MbYHO-H#Td9 z#VI}gnsaZ#480PUAtnF-h_ZVCY!|Qd<6DeZZgio8aR2!Oe~(-~sMLLM?wFWi$JrzI z*<-pk8c3aY>YwE>F(dz!Hy~;dTheapNerq1UCmQURE()*e*>6?2l&v8TrLkyLqXD=$xKjdOz=?%tS>a#$^h4-ac|FnQ{JtwB_810nas4QXtd z&{)L~vsF3`<~k`j#o>FF)Ur{g1L-W&Gg)@|ai2tao9{3r?Dv+qpCKi?G${f~C!S52 z6!Sfe^Ce}5UB9G(r2on(gIIxaiAxl;TtL*z``Q3SR!b;8%+L$xl5G4nWGNIPYo}<1 zpd+8R?4~A$%pDsM1{-0ckZK|+K6ldk!S2;)xE+5)u-@ouGDK=k$fPWC3;Av>gz_a{ z|A@(y#cNydTIe&SX9MDvZ6rhELgO=83>KteJfh(Kf>SajYfseKlGF-+jZi^4R7-AJ zDYmTY67`%W#=@KiPXEO>DcB&(@FeMfQ?WDB#OJ?f&i*L*@uG9mM~A8?!DgLhB&29- z;TsROUnal=(}`E?`mMc-e_3lH zF{b-g;!)^tS@BNSht}BHQS57H+d39_bW?L2q0Jy}_4SJnlHym`?+UbfQ`}~<2Hx0^ z1?Qujym%lFfXjbg9$TWF2{AGB%_SE{aP#|5+<_XAv^_lYeoY7b@4oPbrVa2VF@ME! zy;!*n8lBR4M2P(+$54o3W}WxpKy#`B)S+O0gc78Gm|iGtzR5#nD#=5P2hW4<@r)+1Frj5p@#4T4?j*K2Tq1(LYSOaij)@SEaM-T z?!0WxuL?{xJktgFyL_`aznyb8SIjTW&{TqR#<0e==93Vs#b#(Db$eyC6kUX$^Abj=v{+9e7a}zn-z&MBE@nM zHnFq75BV54!sK>D;h^u}p25|Vq!D)F+)-()(Re=%wfp>$(k(_eVLbxVc+alHG)8^Q zf66k1M+Wba+?D|)uCZ1PVR^G5scG1*4vdAhht8yEeHKe=xr($4=8mM%si7?8wn5xbZ{8IA{k6$AQc=BIf=XRaLpE zHrgMqI2k-=&YttG)M9f}?SWaHPa3PX4NY;cpKbV-SLJPFu>ZCFneiypZA79u&J9nu zO9aj2hsmj@^{b}Rw6BxJB$u+7OkeEKuBG&}WT z`Wweiu3Mlb5*_AM#PH-yx0(h7bt&srQ5Rdk(|iBRGs`K&s8-W!LvdXVl|Ge!UDCNG zWFX&f#`q??LA}XvY8QCe-*YU+*5ibgl`AU@yF#s~88#Batq-Tz>4(!&GJtfRqVV*D z#Kb(A#NG!w^O`lSwBn{b_cQ|*vC9$cMVXXvff z+HN|ZE>YpMf96E;Zi9fwv^swbqteq0vfM zTkCe_U6%=8sD7L5<+4ze@w*2!lK<-*1Ss`ftLmRhr;b&zx`s)T$3%kTESm^IB=*w# zs>E|x9EI_BWtr#jGD1iqo5}-txN6;d3Ovkw>^@e09%y3BQgY;JcGklgttAQ>5P32O zNjdDUCsZ0*+n`%H!P?+N1vPxaW6AO{1quQfG2VJWJRvG^Hl^`BDp-?Tr=J|ti6fqZ zMJ5&o+e9133m8&MUap(HdWSojSX%_1f|az{^d1vrhF0fpJ!RcpVCwh-Z&`;mgF$L{ z!tyOrS~33^pMPS%QsOV?7kxxn$hcn%rSU9>!C~}vEzCb>Vrd{-c)O2mWWpL7QYm2a zNIrkdf52LyrZHy33R=~lDX3>O3mR8dP)N~jPR?aV#XniE{|UT)2xn>_I8uR`!Lz7vz2(1U zg$#81q?0EKX8n!3{!avALHr(=vHd7`$QaDpf0%Y0Us`^PxouQTh0|pFVU0p@Lqo~EI<-#LLWnqrS zdb7KkVRpu;5~8A+-Y<`Zs^x@-)1VxjLt{G1_RS*?h!*VAVbFV?idi& zHGTrce-=Laq|}G{LN^QYD+@b+2X<3=T#yRn(uC`6R>t#Wu%=5j=i1PF93od^1j!%dq;p}Y9+(}&}}`hcLcZ|f(pLi;D8$Ir*9`52>yVt z;J?hp1Kp~aZC80~Ea&7{CujP>)q?q>{fV0c(`*?bxiRKqg^i3N`DG8v;-JTE=6DDT@F341-@-g-rRYW_~ zF)~Pr!}UMD(8aY(wX z@|LifilxdNR0f)~Xxca{hZGavOEvW0d9f%PZV#c@8|^iY=m@B#B3m*#{1Ec{o6#YO zAZ*XTGz22#T6eJR0=-0|9zDu@Y>|GyCAX=){Nr=1afnvjv2HrtGS& zxj3kI#Ah4kbuYV!@(Brd|E652I4qq`KactS!pLH%yGkq{6J1A>M5#Qh298t-{&RV0 z6lhLC13DV?@z>n<{%K2U27lWAX~kB|63(yVDot@hAiQ0RrHR6dkn)+1!w*U&sW^Mw zWPll|2DKOvJSPT_bn3Ie!?!S?b~{K9HR=18)KCMXLrA%gvHdmv>ssh^R7zMe&$I)j z$QToxcdzgK1KjXKoXKq4N$0Opt$PLY$_-3EK{qo+_kr$`9;>?rchE-u(d&PeaUBnO z8CU2IQ3dqzKPvtn>Ipy;@b8Z%ml00<*|9t+DH(FzlA?F#!;rX?-WwE>344%%wE0{s zKhy(GdP9EV0d^|2Ju>Ndp1_imQ*C}9F#Tgrx-%q1?E-aD{G;N;8fG+V=_meATAB{fkVpNb3GBIfFe{xBsFPV-0Q^2g+QdmyKa`gMhbb2fg(kh#ik2;cn-MG8myx)@pE_<#*k|H~ub*0TGLp3!R8n9w0X7Pg8NsaQ?-S!^G3iyZK zp@xaNF6ZgAthYUCOpNqfK6&0|A>NbZ%6x)TnOb#)&K z$%;kiyp_9VEjHx_>PzW=7$}wyTG2GC45zZuU^LjbX}9iTB8yeSkXr`e*(N zadsD4gS!(OShT;+lb%`;GdfUFMlGSXXhVa@D$X>~1^9!Vjyo8w|a+lzc0 zcoBN5Dk4){HaKXI+-gp#;e_Wur&=#Q2rF~maZGNMFDGKv2V1#o#ArYE7R0gLdv2lr zU3(_$TtoJh^(K0&Oqk>0dqdHE?`qNR=kjPYM&GA`fWU}B_5LgFm&g7yOMS9dcUIac-TZF*6kw0ToX{WXerds z?|+v7xs`C-752(d3v+k22Ft;_3^TR*id)V*3xQ|>0aMO4aStB@D~D#cb+K}Q!%QIl zg2J&b$Gc36*`>P{gqE{&svt~o;xiy{L!lEOf<>3(IWFy{s}gvnBK4vI-lgkHn~{B; zN5W{}y1T%8Qhb^Y-@0mexJO{!Qdl!k(B*L!DBPN%?kmQS58&R#Bc1mmVdE*lne+YQ z5*;(%F&WPSG8|{RAj2Q_M$q=?%b`-dxbX4r9k0|LcC)`2Y12)(0R^d~N!;4pj-6K2 zfVFteBu0YL(yP5E$J`g|7q2Rp*b%Mx^||u-G%wJ0(}m704%*Mp&+R{zpuag(!&po| zt>1>vHyXp&CHkbWTX&A?0?TL{C8oy3!>$ZJ4X8D_G1v$I5Dg+Na&~%$MbsW2D7D1C z63PK*$tlSr#piavV_`b*wbq@pPvPNCS6dhuB6z#g!gTklJzvP%sQ*MU!Ag9*ITOFE zO6!l4h;--;YyV^Xo$Tb&mHl7?Ma{?=W00>=tWLI!_2wv2@R0J#P_uZ^(|86CSnc!r zov~4Ha#6};Yk3(A!*_nS4SkI;6xcG?{cFV>cPW33VaU8=+I*rr@5I$aG zPBu*x9kzlc9Y|~mxm1<-_-dCB$~It_>yv11H^vFJp(ONnMVKYv3ECFQ$9ocOtkkVr z+wN3e=yOm9YR{aFUYNV*?V<9gWRx_vuvtvQk;TlJ=d?=K6>rHQ28NAC%;noJ7hS#N zhI50LHcpKPC<8A=2eAC9fZB%{s`jl#p7kqJIpiJz5!h)TO46G#58RLAypo0ZiFfq7 z_wB0ak9aEw4_S+KObEz0}U|Z9r{#P3tI*VIP}^kS{iVy|3fshx5_zAg?N-HNNY{~=W(1% z4aOgrN55QOj({cB6kDgN&YKevmG|yyfZ4PCP&z!Ft|-5H5{DBM;C|L^;M=b)0h?%X z#CESV>H6}cd2~-o(8AMN_19%bD6Y>0lp}o+Kbw9S+#F#8n(^#a3A&Y>-opKYtD~!& zVNY!xQ9zM>*{UgzoL)}!q!!$oMBJzJ91lr|^k=2pdwV%HKrF{N{@k%MSiO7eoO88d z>w5!b2tqtkdCB~;POnl;VsV?}0v|qgov-CM9Ji+g8Hbn-0{QZ%LCCYV;sF^6dh7Qj zYS!rMHqyG~hBV zKlWU56VOBxYIGRpZ1FyxfT3gXS`246w`}4cbzS^g!L@jgg(yMJdm=} znZ*^eqy+Xq6No*vX(v*!#|aYZOK+!qD!If~eW;dUqJ5LLUoyRFvhI>iw0o3Tu00o_ zf6>DgADPvhhmfMf)bD)Z_!NPuR%?V|bK-!U{ZoFw^rRMOA-J`=p}2l?p;rG?E*Vu& zbF>&+$$>#jr@rNZ{!e&fWX$x#4JL z%gc`ygU$qDM%>5N%N&Jqd$_B1=#l!t;@NAOxJ2iL&BT^Jq7Qsuf0fEz_FXq_uD_8?_=!NldqE8mNFPhX@ z*uM%b?8zEtDkzK?r<$P^^&MqL*2Eo`ps4F!JX_BuZ$zEpCZgi7ry7{(%Fqg^=;oA z)lW=DYcGz7B&bd$$S&5!QW|N98PkVhUVs@;53>!_+)KYi4 z6%wNWP%Wk6195g`ogg|ce&7I45vZ)XE0==P^*P8muySj!%)tIlQ-+p#nf6S~seLZC zP53eH<=zz(X3Oi})P{v*o5Eyu1qnwP#h zBUB47zY>Od>aFYJ(VN~B*h$UwMzh)ko)H_dfx)?`89h0OBmP9(`4q!SDo$cjF`CvC z4QR>|@#YA69k3W+eMli5He@b%v75N!gcqe~%mN4R$FXBin0RMc`r667epdI^3~pGob}a^Y*oC&w-q}1&PXhkq)>zB z)UF5>nF<5@5>*}E8?pQe>*=Xq-zCPF?9 ze>mN2g2yUam$d$r)8>O|%i?#q`AZ*#*t)Y|*iwmH?DpryBaBl-9twe2i9cmA1+I|P zoX$DF17l7N*3GOMH>H*4%v-ysy+Ogj6W)l9JiSHZw%&I&RoS!Fg@GOAUzuB+bzd)933MDV+*6^JY?8@csL zeyRKQEAh

    *JS*6tIj>#R^zNvX8%VK}BHmlY=dw_G?Gv_d(-KRhuS61;ZLptc3o0 z6bZJ$4Ick95htaHP`HPDdr>Zg>&t+S*=h}j0b0E!t=P0uL8-g4A^QxO#s+ei??TMk z2@zj|z1gJYXj}Y>_iv<4+eKR-z?raxIABTjhy5ERxh(LH_}5r-DnEZu;}(g`h>|@W z&X8$S2}|!7)pD&_T=&>vab`iCmNZ^3Hq_m>Q2=dU#6J5E z&ebOh8M?j5Hv|qoe+s}f*ztKqGPN2;Vv33QWnXR>f8tvc3o!lJ*LnKDx^1V7^907; zWYGqvvA>7uXm?Ypa*T>^0t@Sv6{&?gVgey`Kat&R2^@_cDq3;;J9%_AA%bTH3g6K^ zmT4|M*0Q_BnB9HQgQ3qSmFdY6SA1;2eDT*Vypr+C{83+Uef%kY29lLzsk;-%$!U3I zQigl{1%OT3XYX8huQ~P{3&d(5aLREEMw}onf;i1+P=5?9N8wrhx{_JHxEpE@kReRq zQenEDZH*Fg%pHwK6VNBOp>s=xc{jNQ{x9?$7&59aX4)P|&U?ppST7}B6Uh}Pqbys8 zytCofG8ra)Lj*8IK^`Lcu%Y8j)T4QiveH|t zYL(vX;&*tF-o-Q3A076id@%%CtsXlM$$UC1y48~UG}GIp_i317BhI*F#XADCGMYck z)^=FC8Yse+c(<@^5>dN(E@jF74`IP7_as|2*ORR0T)Eq zo$V2&jwILuKCIxvuIl{io20F>ZA#r1Tys44chW8wClwomst~q(3m*{?v@7^`WRhsh ziQ;egerMGu+Z^`|g?k00L>Su7!PJp@+7usev3mFrOlW9}TZ4`;qf#8WKiM^w_%v>Z zdcN_S2(#X{oNy=MXJ@DId-hN+<&c?$Wx^S0ImSwh6-~jRHa|BvQzDWO@JmMt`s2qq z1EpG^L$o(Qq{$n%GyBWbyal$z6mW8iiA-%0w|K7xu;?L{uJHB8mPv1-7X*&_Wwv1p zb^T=mS>8J#3sZhDP*%{5|NyA31mKYcc8$_Tg; z^Q%Ov>`Q~D8ds4##!e=ox~bsG`W2qMyXp{-XMV&{Z6w3kg*v$8%7I%o;>n5)8QkDJ zPf&Ji&|G&y2W*+mRP-O@mY2pj=gg)AIITu5ZdLqqD!I+018dg;hxkoWbp@oaXyl0s z?zOnUA5)M5b9CPr7e{Ef@emBRDJGCE{qLbqKH8lzyZkm6yHk~=-y3Bsq^v8BKf(`5 zj4uJbqp-Y(=3{uZuJ|Fk0uk}_&Neq+ zEU2UZlW5P}MS&Ch{rV}fz?)6}0k_z0z1eYFg1^&}k^KVMN zoda$hb_M>4gqXM;UXi*p`9qS%)cGiPlKbzRT692d{zjS;;08&;lE%nFwu|S;=#U^{ zRJp?84! z&n%Cv=z%32a8ctqLZt@&_|MEd+`=0nsbTfEpXFScQ?f`0JOaWrf?}=Bi-Si07}_<| zVDhig{N%gHRSqxfl!O5D_y=Fs>Kn5=8Ok1#5AD=bkBoWxQ zGqGedB4WBNr>Vll*H(+5UB&}=W{6yMwj|^xb6G4JJa{NI-nU zCdHd6qN18?31ze+y%o_pIn$7XLV+ z$4t!2i{IpY(rN4Sq!}tyG>HwgVeIiI6+BgKeS7r?k2BZ}Lr#kKnx+;v(qJ#R+$Ns7 z9Jgm;N&@$RcpLj`cx#r2Wb#k#Xyq9J49E<3m+=W855*U<1QJfp24xxaiuWeCukYPz zcpNs}@5Onc;^DaOO+p$7H;TV3)PEYFqoe;EN?;Nhp;)Ulln74>aY65&M!{I(1k~CfH!_+W##@#6UX6P`PrK2ven9a5ohIl;}|v3>wE4#OXN3FP(;LRIxi=h z(EopQVp>p@f7Z>-Ejilzc%CJd%K_#cW)acX&w8s_4TvwCxcb`}s9tSiwgRp-N!5Hh zM zR)W%I)5Q7n@bHkVpPrNiVu1hr`8g#hrBta*XizXRENnX7>2TWa(8q=$23Tr7Ult2u zK(@7t260d?4iYPA60XjZD%mR3#0lls@iteA<*#O%(dA?Vt@G~p;$_~6tK(3DlN)pTYnbWJ7>5tQTJcfqWEdVBY_){gn=2V3=q#Krm*L zfS4vJQkTY-hNEW0_+)gLiu)dCDovmRN~yW_cKWBeQbO{h%*6({m?ZK?7nHyL0@6v3 zx;2IXoERqr6bFs%(6aAbxZjbPyHBpVq>=w`prK`Knur4C(J*J8^8bbxLGKl1bJKhh zE&m7Md^bkVF&_{e+m=hM(EkHE2+C5tGl(>J+g1}aZ z-aP#?z!Ow(7TmW2&!MN>B&r|{qjHc*@c*pRC1}l?@g+DdYQNIaB$xeV>#pib60DE<|RTmU-+i*A}UGS@(z(0-W_aDWt^4y{#AJf0a zqjtmnm3Cns^s_T&LbFoJMQ1L@`9T4Zp4D90K5d)S6^96-g1I?Uvmb@b>iDM0;!?(` zNEVm%};%rsOkUdqiHcY&TevTiiPArm?!f;HtmrDdXezuBYppGl zKUE9XJD1_rs?Aw+JncAOTADuCzF0%Ek0b@Dz?O^1XjWsFx4<+%4N$q79_r<`-gBDR z@KczZR+#VU7#%q~>#(;j)qGO@Olr6G##_v0eqJpyQ7HunxbyP2o5C_YY#O>axO9pB zVS=gG$i|k9z@P%slWF4m;H`# zG|!haOg1d${2Ev(yPb5M83^b&@-`p#O!beenYK`0$vpwAu{)&%3MM~SN9vF467(6oQAa{ZXd7!LdK)_P|S(fc9xAV|el{Ux6(-OY}r_3;22#+jY% zp_C2n0`KBUG<3lAXkPmHAkFrCUM64tJAJDFW_cWQO-nVMyUcA$(`qPYv=FD$DDR`u zSJE0O)3CHB8gGvQ#VT~w(L|-spU5QJnc!UQZGOZ1#Z6HeIShX^{lM4Z`oxn5t9hP^z+BkmKa0k4Q_Pmw zYL9o?GG?cnpK8O%b+D(bK?r=wyQJrR2**uzg{jVn5c^Y7OUVC;=}b3x@9oSI0T6E8 z{>_KCS(|6zgxj@qu6A1^-U3eC!68}`2EZRfkcw_IV(b8-L z586#Oj)*LkUiX|sf&Px2xr7|HxSR(>y~K_|*D|>$t=*i1O?!qZZ-8@ZNkRVEzWu@3 zKx1hyYz79Idjs~wsBow^84G0S4szn-G4uQ_^E(&I?r*{=8w1b972PQa&z4r|l2_*@ z=B0F#}xYSF}hqV+x))}@C z`r|q~#NsE!)|>xcI$))Fp;)iF)G_^qGCt%z+t~YwX+6$FiTPsUlv#^E=wo?nFmfHC zu#pk@A=?Yv=H?q#%@={RQPCF0fb#_NvCLSor6aml?b$L@x#8GAN=laYJTO5=`!lTyN#6qf$3K+|}Q<;%Opnm8>-9p5H#p_ho!Cpz1<%EU7!4`XAQq=Q-x`GK|r!XOL z{H037gPTRD11y4D<9gfl06ZqH(>>+Ik$Bq9iR>4K_R->aY_?YKbGif7locu{qM|#e z6(UWH?IKk;BfZ%GS>_I_{SZ)S%~zg|Ua~~oWz785q0~ASM0llq{Rux{n3*>Qo}yxA zNS>N0s?b&b!k|XO55hx&(GIxEIMtU%o=wHud82u@9$*`oex;!6PA^(p@6m&7lPZ>F$=4?vifl4nd?rI;5nfyBq25hHqp2_1^c+`_1e* zb2#i+d#$H_Ppz^tS*7clv2yya7O1&QkRI1jxyz=fWqDStrgcshFc;Hy{Z zgp64ouMuXD1kuEFD)S3#B|hf7yJT`ziDOKBw!>nGP?BjycR z^DVQh3gb>Xs}5(6QkqvS2vtLm`wzdVG@Cu;eXGn;gC zve|&j5w}L(#1k__^Ntw4wNa-?YZn&yfN|h?oZCo?H>G_Hj;)h5`-Q2wPBb(1*m*&9 z@0~9ux=9_Jy_jaS^FgF9GqzwZVrf4RWX6G3eU+wFER}LTeha|lkAQAtP+p2dq1V?l zH?!6V`icvy$tbIZqj{6rc1}o)WYm|~lB^5%Tx?%oL7CEfoaVM+g%ybzVI6V83LAM( zs-u$#1MU<2llh*`qUkphnN0itrSlR=%09U%F3*y@2(~U@==?=ayiw4ofVb;yoEm0D=?M`7~ z1MYSA#1NJl4>r)8f0M5jp^Ip=6^sSdZT=P|dCf+I6!yi!4CozcpZ=mMEw)O%zZQ{Y5kD#GACxTK5B`x5yDQE zpFT7AK%;FZ*}nYTP>tOeyVPRd;FU`5wuW5Jt{P#5l_ik#V!bUDl^=}PEf{VgdOmG6 zVa|;*iw-$9>^Kg2boE9ZF3EIGc-7cLG<1u|S4@Q4?FNTnwRbX#iA~fAIa5!s(9gC( z37I1tNs9@0J--1i`fzFidS!@hr_Zc??>td7ZZ3YR00*7G&%~Xlg?_tuE-$~< zaQ3F`nM7_<$u(?~TSex-9c6iI$Q0Z9y@o*~%lTu-kgY8NbV$SgYhWa)ksP*6{^xIe zDlWcM3|U|AOxTc%7O3#nGD7zt_z^7WUfVNjM1jdsa_#vxg7sxgUW8&XqKBQRUrD@^ zEWMLlyjDeH=rbZRM)F5Y^Mk*)U{YW60ZqnVE=nJw#J)S-p6Mukd8>Bm-UD+IRco}O z@f_RR(!H;7=}r7#y*dpPVyMWRdpZd#D@F)gx{%2e{{x)%Tw*g=R|-=5R%?sXqw^Ps zpEiph9p3JJzNj<{vb=+fOVq0vH0IHAHv-jFmqg$t^Qk!z%Ve0PJ^uxjFkw4v z+e+JNwL*L1oh0f(47iA8P)O~hxh=>CMaT;Mbws+FD&KjR%`D^B(QU`HD1Xg2Yw;hy zzhklXKDsu{{RT1}uCLeH?KzUx4SMzM{Hz3IjM(fmBB4gn+XJ0;x7W|E)Q5ypd2BdSV6xtCmpI_tGUENdo5mBS* ziaVI-H(|IA9PY0xxOS68<5)QGy6g@~(Jb z8a06Zo(H)a2`F{yRc`TvrPoQmge@tl@^Xpv5`y%bnk;o9m&=K0?Yu6$efBhxPFqWw z`|Xe}qv#ctcW#6@&GIs)UhSWwT)yo^kEi-WDpBJ%RjDx$S3t5|B@X|mZ8oPmKYbFa6I8aFCW z;iqo}>?UmXBJ(iTb@km)qx#A#K1wBoq=!hH1ck8kV-FrV#+CS{cQhMSMLZ_)=^62W zre+ETQ73|%I|-YVX3JLHV>J-kwZAwZIL5joczCcEcIzWdIk8VC zN^Q*P-K-Y`d$H$>XZ3h#0SAZByAGNZPIvJ&@j&5n6XS7fI;Q>Uhg(I-V&wG1B*k77dFP$&7M zzL+nUjQPuC(ri_V4ZZQATzHr1B)lPe4%4(%K}3^z>3(4y@8;G;F&C{0+7BlaxDu^~ z4(H@GRw(PT&&_m{htr(5K-yhvj+4bn$mGX2u5cZVH_D-*yD%x!q45i|K?}1JSUp-P zenK@*1{zP5DqE+CR?PX%d;x^(P>HS@{LDp;qQ|L zum|&vnR5+?NBEkuc4ZPD37R{x3mH}{^yMdpfl`n&LPF3OLLV~Yy{APNlUOeLAyy9h zC)Gc1Rz54`oV&4S!xvsdauN z)`}G}yGp|sYlK?8V?wQXYHgFfuqOiuBAs!xL;4rOuXar_n}4P%dr3Z{TmD(rnrja- z2;|PCrD$ZvH0x*x%;uiX3UbQUP{ex*XKk~O8k)?}4;x!-GCat_tCS||uJftdJh^Nw z(ZXp}`3;N}*}d}eVdI=s(AvF^MODp@9#)m{kK6~%_8X0Re)P(C?wxB%8p-2?ND+Zs zyt+9D!BOQw_bCT*->nRyx;ju;W=S`6w|KaSj+{-4ahXNG+#;XuycKClEBYY>_smy%+;;6cc^zfNZ;Efj0F!0n{42V+tU}(+Q`Zn zL_o=$HvKo14z=D$jZ5#h-yqR%NF{F>lhV!(O&^qiIQutadO zFc_5o-m58P=94%{k!UL^clRqAeb%TYd-$5X*Yy{lO1^H0U1d%@_BjwS@eD;?IONpR zxQ{8|8QaZCw5!LTvSf&>Pw{F$diSPe?_6haV{;?vz<-2yjovMl?L91+j3n&AtV81p zCsLg)o0im)Mx$1{xGvcu3Pk_vHf$r00ZGKyNly%juSh zPLrABqvgkuqaE(K>~C&lGMAu9McA!RXp5vu^pCSS0RB)D@Nzd^-7~`3i0z3V z23F54;SoIpU%hQEP>k#~061$^FTeOhxvVl9ApmYEJ_#ZsqDNaf?+UWh*0TCC)PUc} zWU_yZ$`ZK8KmsdJ0yO#-5|1{2iTnK)Fxv`n5ND|vozjmRmUmR5Krb^ekr$tQ!rU=n z0|Ir;+rXtR{xMK>#y2W|SIBsQ>L2P}l&$5k{_=W1l%@l}{txF8y>0bh(ZYDC`!Jxt z4h%}F3 zI8yP94z$Hu&Dt;T-Co4gXGeqWQ5I`=Q+N>U*3IkFP=PLq_KD~(fl0juIaw<2@ewU_ zuS#x`$!G$9a#Oy3JjaRq>0ycmA@PRt{J2x4fb~5{cyuitfiew~;ce;TgZuaUlgTtZ zRH@T@j!Q$5EoOl@aK2}8`yWf^Q}jgTz=K&6zbareIS8)`ztf0rNK%XQVGwW;d+9p+q=28ayJh^6=o3 zPUj0-T+{)9Ku$#88Zx&sl)de1J9}j5nCyhJ-K;D9K5#XSMSQ(}V1$4-7M#x-gnCNR zne2MAc}maVryRL*#2yyC1d%OD0yp5A z$8{42imp2Tp>=R2utZw4ld8}EnRX5eV2S>JpNpJuRgH_6!|;FfOvvbl1uft8QkTSF z{PWC5upAV~fxTSe@>u^?$&tydf*_OGpBElUs1pA(p7&n*klwmsHvi*8y4ctG>E>(8 z4P%vipZ*;k187SE4MyW|-!@wxTj(F&CzGKCL82&V&|;L!{X<$r-ov1a51GTSu>QSZ z3=l3Zl^=}T{~=~8(xT11E_D4^IE+?WN0gv^v%r_@m23J|fgKLf&SHjzFLaU8NmO-O%k z?FJ%LK(9EK%HhC{zJmPv^(zc4?2rd*`IFHkkQW-IbTbecXJC-IegXoSSgMD|QAY$T z_be~#<=Qs$afDP4bXq)2%mJo%^Z9(lQ5;S8zr2ll@E)wQ?EZuxSjYO`8HBJxfnllY zKKmapS!_x(+xY;4NeSGV60&VMG~P z3Hrb=sEC_wGku>-05hHM@8u>QlVzyrlT`VS5CTtu+Q2`W=6@|WgvyY774}{&;kliA@27Ksh?o`{bb)!B}gD2KnAMt={S876bKX(JVNq4J?)d# zw&eDaOG+b6L8yJ*3(h*8O5mG>a#?V2aAAmbDzLsdfOaT>+9(86Jn-rnMyOrg-NW#j zhFwrlacKr$HT9=dx9v%%)xsN#hfnN)o7LH;oYrY|$nx<@txk-a)@nP!P;sLrrrX%^zLGy-*9eOL53T^Elj|J=^rCUi)U1!d?t`Bu&^+8 z6$jcP1LtF}*Fl)!@8_me>Xzgve+<ca)wEBpy+h+?Ds2jN3*Ow@*fTwlB9^5f{snvP3O(DNigXsXEMWT3mEybePPl z04)q}OCo{_B~^}gsBTuuTR&aV@3kD0is{X-$x~p^nYXvq1WmepHOWeMpBtaa&uA>F z7HWbRs(z?C&vgN$ML`;;+0P2}ToTA|(Nf+#HSF2$J`wEFtJfClK#mG^pGV%h@?rbs zdg;zF=fy~R)ru$IJ!;PaLBPQMB^KYbE53j#zm8Kpgj2aQP{c9my?P(o{Bgm)U415a zkYmxd{?b!DlJsa`{}yTf^2YX+_%(_M$?CeP zvAws*o6A4DT$VfhATw_Xl0}OZjl4YE64Oytq$`*T3Hj|Sxq+;l8S_>JkGqJxi(6jD zW$z2)NHR#}dna^$_alnNjz@)_tKxPImqt7cmQZpoke=!X2wVusPu*_GrMp5>0vgrL z3=aRxrz2!V6r>(q-HwRxM!9I2V_^nwvLu3}2FR@za+wTzeIP8(J3MXcU z=h^!ZQ-M1+{4Tm&RksI^r5hUwpQjhM#oZ6gCpL>IrrzGie={IQCNhWhMOKoSEt>A362*`Ea+-@?(D9Bc8S2L8&$gI?%B?`XOzb`4zMP$P9dPcqO*`hbjb2Z4-m8s&-L{Tf(sGs9ydR&UIY2j57(FFw zkvty~O2@vwSvL#3u5bJ!{F8$tBeS18j3Nrglh;m_iyTQVur%TAXPUkob5);{_fnIa zqc9W5wi#Wm*_lLCbmM2k^F-H-1q;d{RMBY%&m}${WXj_7;DW6&+)*KChJ8XB@ZmCh z%dKMfX2hc?CcF+e>S}jPwQ#qvrxgF2IroHszsvq&K5N9G=30%O?F1|9froVQ!2Y-n2T`gvNx4=TJ3nr8n8*GWi3#EQX z+t8XDy5x)RAw#^iPoOmH%Xe?qdWN`*?s^-Gn$Kp;efZe+-4Xm4x4$z2%D@EXEfg<{ zMqca>DMBO)TVrETnMIFSLjRnYSR|8eFbcxiKVV50&J?zyYIehJgc^Cg-{Z}T}J1&9*2KYD9yCJ;OY(rVmFStddxp&mU zT>(1(1Qag28UN#Y6C zQ~KK{;pmE_Mb0lUrlU+b21NZF)|Wz}P{nNXG)shoZfDJ-F$bNmW}WwoW>wSHfkpg4 z35Mo937z`c+Z-HY+VPGi5X?xYl;)Z(1;sP%k}^=-axPQYmd z9zp)x>sBE&QqimQ%RVFOhS^|k>FY24LKhf%{K+u&STmKoXUq1rYmwN_XmUUE#E5g5 zqjX(F|0NG#D!>pzyr7ezm(cmsdFDW3F^qlwfLiE>t~a59cp**Bt^~dPfZ-noDvb6% zQO{OIjHqMn`*)CB*bmj)Yy~+UzH53@-1Zch^-{^^G3EKv8TGSJP(2!hHrit-c!qhb ztp=qNiI;&r@!B5P4fq+WWXO*}g>O_183z#@0Aqzn1%$)hgGIxg8vr8l^SVsREiMj+ zgXWc+96>}4RE8X1_nd>8c-CfiKJ_!F%G-%#a8f3|yIZ33DVz!Pi5|dcvJ7Nbee-u~vCDRtt**vfL3=_|m+lEs9%r?e|R5Aj8;E zXr@eb6roxADb9oSDxF648GVIcedj@bEqC9cXdTQtmBojIgM)4j)c}EN^d3A3dmtjB zE7lM7bG0*L!9?Xf?bmF}P3h)>L0fi4md`RYIOiQ6DFQvYN3sjvf>$B>25l!fv1Vy| zwA89?pT{E=UaZRr?T=^glV0BR4Dxe7p)=InC>+tc&$VVJI<-Fx1(t#VGHtKt@krMX zR|6pXk+XpE)4KT(<^uLqtP}H_%D7`I1>A z?L)iB2NsAyLlzrXmykhvx3^HBr_3~*u~xPF98I+wmj6>fs=VCjzP<|My@jU9jQWcY znD%vTybk7LMUdV#-{m5TGb$1yv6xEy0})!vcx~?f~xv4EckqiK2UG zz7M=p8yUoIuIu!R2;9^kY%{7>2Lyq=CO zZk%r)4&_6d^X2n6$q(CXH%^Cj`;Kr_9ZP=Ec!FwbfoMPUAuCs*Q*At1dcYwWXB|MD z;ArGUc$a7$!Ak?c8kqv>G>{9DoSYns$pA)9UhzE*8m#bh@3}9I1%XIrK4XeJMH(cA zWo#}{E~GiO)b#Y7z#a>4Z!WA)_7@gll&#|q9kgUM0*{h}KN=e)EDu>!N-Lvh<<>)q z=WV`x{bsUpd{=9ag_>HyT~XPSc27&m%(m$nB9OK$Y)PlBw~>Y_`I4vt#Nk7r)(8NR zAIqEt>SgX*9(9p;j-B{kOt4RUqWYr&(MatejR`+yZCqZJ^TE}w>ia0UdxV^MyRE9e zzR`&{bW0D~y5@mk*sZI?e%^@XM9EXxgaq}JQuh$xm3#-{@dhIpwxwmb}TX_KWJP7a}flG(^k0imDM4>>& zsM3oZU#d6IDrb8ss^y{O*lS#B{i>qcj~5X98Y|LUIi zAY_{1AbNVmxSddRfr6flXF{e7YSKDmtl1Pn~u> z(D=_RfrU{%&$?PF3S$dDczXUjh|*wH@{fa8YVZFU&?8u3bZ^jNdgYTRwJ3(@VgL9| zyq(B(Qu*)SZ+&rucHf(=?ds|R>*?v$m+3W$XFzx-CE=hyd!|49Q5>N=lhJ3wnI#;@ z0+H2Qp}Ra~MMdn+Q_u}hsS3?Y2?-|4@Kp|C0rx|U%(iVFVVyj-eAt@0{;WD77Jw>= zmSL%&=c;3X#Oz|tFF+`KtomsTi8lw4jFwjTN@oPO3w3zy4KqD8wIEOi!1#qux{hPl zo6NeSoipC5go&AXsNUIjg+dkYREA7z{X>RC>X3BvC0E4R-Jl1+t6h{CcyQDIXJgvDS0T=npYVZxQr$1M6kyP z9;;z+k#a#J;sxS!J76u*9Z7+yjD{L;M7=XmsIHdG%qQLDHqHDkjqhPN`+Pnn1^*<# z%mlC1{DNtb(#u107X&_!bAr%>vqx*Yt5Qnxo~RW*bj%w-Z>f&f56hq9m17D%$J>z7 zX&Mb%sI%tB9Pe2aC@e9_HEEm~8v3`U$HyD@4u|Y<1vKTk4xBwE{%kn!V=|OYC>lXf zROP)fx$IWoltqQCSoqT?imVT!q32n@<_B?sP#CUQDG$CzAsr0%G`06hnxB!`9@T$? z64gd4i^o1@T7B8mno{;Igzhn`(K@Nib+8Y{29!5@p=M`5M)-iNWzO zpuBAHD(BK)u4tM*I^tfwX|O#wLA9>#)VoxCezD8`L?y3kAwT6%zodPjpYR>ZrRf-A z5jiW8ZO&`uko}mYqWDisZ(O#LUJ37BBJpPWlP-sHI_Tu+j$k;3i>Y&VZ-y0I3vg~| z>u!G~Sp=16{n{6j2)FJM%@#3{Pp6ucC&-NAk^4&Uqp-P455OmjRXSeo+(T~(|v{^ z`+CP>;-|Hg!)kNvlb!1Fiw;x0R3Y9wE*1*g3Rzo2|Yq8p&65&TB;HKWTj6<7Iev@WvG1h&Cxqy=JrO&!upj0n2w#7*tlanq2Cqa&Z(e z$*)-C+2~2iSHa5~oK~v=-w@>Q*Z1Hm1-Bss8fooAE?*rY|8=>AdmFA*En!2WD`t}> z>@45yV|aJBM|+Li)iOC}quBB#sb1;un?4@9>Km^*8;7mi9s_d9gyg+rzf(#8zs{6$ zgw73u>(G9IvUx#WiX)uA&69W&9Es^4ZGedZ2L&&g%G~p!mKMjfO4`WD%cnP{J7Bww zTe#JXd+bSGq}LwP-*P!jN5>Leh8RM-2L${BSo@=QCBJYqk~>b&9J`YcX?q9gonj1O zZ%k~5#cOkQ)~E9x5LPAgE9Eu|_Sc0`?|z~d;1lJ+#Pmgg>4PQo z{^aP;BYQAR>hz}X@W4KaHWHkIVsf?3)9+RO1vpjUfrzNE^2nxPSWfwOw@itRZse}1 zA8S|Aj&Q8e1LW9&X0o+if5@Bh;QVzW2Ts=#(vt~G(Ii2Ss(~}AJ_DXqyMGzrUnBZLc!JGPk ziA-I~c&Zxz!;n6gZVVQ%`aqqtp>pCMJUd}Q)r0q&2)rkWbap3;DcD?EwBCb3s0TYb z#*1~Tel`6ebD2V(Pxe*QpNY`?M@3H|<0=Zvav5Soqrer&8EE*lq$1qE9bQbZDrxuj z$z2tpN`ITQfJ+VabFb&R44y->CWZF_%HY!Tzd$@-OEN>ip_*k)c})MrWItWpU`R$0 zFM8_Wyd?wU|7hF`l$i>+0!;`7reFVnT|ZAomIp|`bM$Q)vo|t~VW^Y7z2t4j7K|_K z_Iq$4%A!5G8EN<3d$2j$L65*XVa? zC^&@4wp89_i~#9{Ju3O2f-8F#0Md&FhC7L;d=~sSr%C{zDq`3>Yw81OGj`QrX|@q+ zAUb4yKdB*^2@t~rwga#m)Rff)T$#UN4Df{o1z=1mP}&a({O9-o?OZSssAg83XjJ7l zkjV@IMzn!LuZH^s^lnoaT3#7FBP-|+Qw4j)qW|DkFrH~hJEU@WWmAEu3BC)xQr!rC zJ%P;66uAc-AphVN8YOK$)A#q{7$}R4iz6W?Z(sUo);YUlay|VfFKb&8f2e5YP!W3d z&k6!h7t+Wyt2eRmMMV~yHmxM#<;C9~FA~zz%UsHkY;?$dJhgoV8^pHmd3$v#iaQ(^ z!}y1q+6aEY!ZxjvNm5i8W(eyzd3pJvPg1xv>Q(T7Tj8aoq>!9k)KX1|5dH=Q*RY(N ztdf#H5Vgj!c&TnT*vivo{$n>6U^Fel&B1WeetFLUqb5=WEGYJF^}8uFFA&S_j3DeJ zjo^7_z0#rEo50xB+iR}S2?Xd$-7altwCb^d2;qCSjSTju&tG(+c2IT?8Qb_gp9oWNG@XVyis4$2jhXX zjp6K&A^-0WujoX99K1bi8$$D7e|s+?e|9jR;8+*vHL=~T{95X-_L3+Vwu`2Y2XDGq zle_gpe_tP~pk{u4KF-(+SZfsM29XfV4n9s!P7~()Fs9I0aUwxjyS-UXLE0?Uhs9mQ zg)mc7N_-u~gho8GIg;ZZm4gi1_87ulbE7dhnhvpoV+^QkV>cRDO+u*!M{Pt0NE&u% zuyMxIDu|y4OgQJl$Xl_X4o--$OiL#NET0+eb$Y2?{q^+8d{{|gVOyj7HGC&&4C1>g zVQv<4Nwh=H*Zz0Rw#7?fA2gnoB}O}BwwK013;9I0SmOt#*7y4`s=b|k@25Xo?=I>y zLYf@sWYIHbPw=XE^hZfrT#_PZ$C;56|1U0&!&X;KOr`V6Hc1)a0={?6K z_l6-OVm3==w<}8S&47`z#zc}vj59xYU@7wz_Fa$4Pcyrxe%Zkcb5E2SPd4hB3 zff2z}uopMCUubs6ffmU6&ebwF!gFNEQlRdho-jj<%D&~$9{%IZOp>mnK&A)mh=?#~ z)411;{cK&Mu_0;|hrC!*Z?;_)No3ic;A#FS_AV%;>0FrF~qt-fBZ^t@KZc4I~dpVy>_6F z?@*Jcr~WF&y31Wkk7NX!-) zzbL^958&7=w#0%gPpSOF+ay7NWO<2$z;E%K-yYrd>5HLy3s<|Bt087LZO;^}|1YSR zE5kW$yX`Bb06Y-y9nNyENz8xjKt6r#E#e-13v}%fiEKo zKX2<`tJ!Uar>xyX1zaYHx%%&Wv4xUnT@=Uj(& zhv{JOY4Skt<3kKbaj!g!?#K}OCe6caOfH>?ni`<#ot{3{Au>n3GgpgYi|Otg{w%CD zbi!x__nBPpQ+|kJR^t1%N`1PxgdQA=#BZwcY=WB%ps_tsM;=j(nBA`{)vsHX8K)am zwlPbBerhz5bT3xUBa2XCxM+sO!u|w~-I6N4RmZkV*Y(9s@@312_M`1B?sdx7J706O z3tP6W=zQJF@FKMAnAfD!5y|3y!#wO%*WeG?Kk344O;h(>Vx@lnLo?Y`^;UvT;w`{Vqx#kJ%d-AIZtXXHIz zN1~2=_L{WR8K`bg<3B+=z#0y;hKzGGD)2J-#DMlv=-9ztitTkZG|rep?j?)7>BN() z&6H#>-!+Dq!`Tm|32J~Sy&-Sjp4HZi0mOib1Y}&B!Hg-I)EnXY$_Cr98K;bl;)xKg zYudH_5=gn@!{z9agN+M;s+M=oz;;Ij-=!1Zaj(&JvvaqGZceH+7Whx%S;be6f&JOI&lL`b++&pYWYYmlI|JYflEJ>e{QMwIxhmXZ@L zX0(^AxFzxC^6l^r0gOSU2CE=kuv7sg6+ZlB0HP^SvOr3-p?08<@$=i~F;gcgJ;t~g zoAj=^?AD(2br@)k?m6eCR*_fNoop_3I{TnH$#yH=TjNk))O+G5R>n)k+b$ad9Y&0t zU($?Qo++un#peHH+dl#y=iR33SzDy?;5JkM9+nCTwd(mjGTzcNB%4C|wFoc|Kx%2JSLu&{ zeE8B#3D|b-EyBcqEfo+3`hT6Pl>U(laFrt?dv|oCvsZb5MaxltKOP*7dSC{X+AkO# zj)5Bi$RsDJHobI`gDj!w%s>E8QQ^=eNkB3R{zP4!UAg7B0;I?x6T&oS&rKdni&%?$ zO$cisa&t>TN=X1GHHgz1u8<*4K{-?j=z_49l%OfpPPcCP0E2$e(w(t;wi@bA3UXL16j& zk>X-ZwGR5q5~e}L8KyA(JAiXcc)UL~_Tw%*1~xQ!h%d)c^1DCRy6*SrWP}KMK4zVr zc2-A|kjvH&Y!ITF2-st-6@ATXVjcM_uVUl^#eWGk>(neV*Rpl|JdV=%$f*W8tcbS^j^PHc6lk5i&2@GomGm-Yx|fV@5# zkf41k8r{R%u=qbBM74nD1w5&QFg5Ak%8VPdG4IgvL*``?uj>#D6aOS$BIANa;kn#T zCb1;WNKj#&96mF@ohua7SZ{wjL|pC`#j|~!8Td00{-AVZ1)AlwRM9c~hhL%wVnW(w zW*L4oq5MS-!W0la?jg0ok_LzfMgIsSG03=h${RX@>ps3{@FdK}LCj~?F8@DNnVIzH z@nDwAg$V##|G)|WHUV_~12+Bn4S;H_07=X8x;;44|F|BA#$i+tQ#nx0-1R(x#siQa zLQ$*=E%O#s@IAg}Fu=A^L1>9Fa(&*xeE8aI*kSI8GGSTZe1t>nH~K zg$c#4^=adUFq=gqdV~r?0%4s?iwUQ}Ieu4+^TB?jAz@S65%~*P@z2wxUI9K5G^9t# z5%`eHJUvQkYQZrv=mF8i__pO)yJjWX;l=d!!qtEW3_s@2_yXx5;jM#;4>K!KB*1uY z3dVv@PV5TRs}X~Og8Y5xE~h^r8kB5Pl1-=F1G}K(0^mySXFTuWvB<6uSbRRAOiT(4 zPFWotRj7C~0@V{oDHQv82`XXsu)^E(>tM!b+`^rBi?1RoK&Ho^qEyRC(Z5+g8eFg$H(n?gw}}zD`z9qNiQ3DZu$hg+^ST0i zwa{sXvXMnRgh`nnJTqzP20wgapa8H8-U-`;7A~Gyt{(`9Q}kx`w0_u~u4KmBnw`}k z9nA)CnQTK8@-yo}^$HW+o#^OjAGYHKs#cXm5J?Ppy+4(7lqu;4&}l?Dm=cIjgqZ?T z<#&^fBqD(fq`?Wly?l<%WpIf691wBRKhr42j)Wr%;&ZN1FzPjoww)4;wexgJ4G3m9 z6(t2AoN(4|MIxY>xnM7LGL(TR8DR1Iub@ak3+Rs`BFqd6-z-FbxbICdbJC}p@H1cg zm}+8OxcYTa=i^%qXg$i3W1Ub;Ja&U6EOx8(p~aJ~PvlxNHukB|(J$;Dz_%AOM0!I2 z5X2QCP|^oPOYUoMF@ocBJjA3gRgb@|+Y`XBjt4x-!1i^L8$Qx&E)~Gz^_!RGVJ>zvLYV2a z&oMACu$i~o+uQx4i<_=a#)*2|Ns0PvIM%VTu{)UDQ3q&B`%!M4Jm|%gCfzy^*r*(9U5i;I^q`{sjT!iFPSmNb}w8Ve97cv*|daG*22ZiJfcIdPc+L(01=5$7=^Tg zlAt&KpK9{<2hqHIGsZ9>70%(eOtaOdDkMeX>*`t)QXzBysq2g>rVA&+=H}eb^{~bB z+zBM-uER=jy?Q*UwkO+5Rj9OpnhVbF5+~>&wF&+B5dHXh483Y*V(s)iwg-F(AEWp9 z`L#_Guw7To<1D5Rb34*%nHe3Ats^vP`0F7C8V(tsHaO3(;#z0BP@QFmQSxrViG4^c ztv-Ya;QcQvfye{s;F9~|acgH#R!K>+zSMBG;wd@9qa>Xu`X^l1@K85A;@EV+b z%c`(Xl2iWF|5+h`VIfIGfp@Ys?2~Z4)KhcZPk%7dF3E7e%6+&bAALA3x;mOl(>&(h zu{4#EQ!3nWV0<@%UE|m?<)mw0X+y@}R$k&^#Bl`8c7sdrc|rW?*0urV*iC2mIw3Em z50TbgD~QRIALNar)o4px7uJaJ#nJ^QM46@|!hz>qtwdt4%a?VJ3J=@84&$OH@pIP| z#I7SF)w(ibtRZ{S4wcdUSF{H}GTd(h%nSyD5nVod%-vTbl&mBz`MmvVf4*{Vigj1% z0nK)Q%;^>^S^E8cE?7YG%ksOK^p@lGM-f!}U-myjd%x!IKr%IqDJsC6fwEj%=g81F zK_F~^pS{=rE*9vy7gU>5CgXwAbiJXNeRuA3e>uZgfB$y&t{ZAL&qg}0kN4a#mjQcK z%Mzh3)ioT4b1~GGPPDO3)`tEIJRgshscGe5fK+?^VVwM*y%514(E^drnXwY+La2Q-TU&vJ?cTYJ$K%I}%ce6>o_u(7eO&6&qIlu9qNu_z zUz;X*HBr*ajOHD!a!-GX(V9IWC=XpWBxbE${4t7Y)|Q=ngkW_vESlpwHx4IH%YJ-{ zIQAj?>em5ig|_!T#TuOQHBQ;?Jl)|I%3|mGt)*h`=^>R^)f?Tg9jbY7X_=E&a-zM| zJHr*3qCY!)XE4ZpKBF!+)31E;20Jwi2eW|r{fsi}NhJksSX#5zYI(KN0KV&TT961L z9PhWvHr?bD7ZrslW7T9T&;OE3z!hjPRBhyHT(lv#s|ZaJw;q@!H|5~=BxU{ettl)X zT_&vswU0;43_EhL-7;^6{WeVd!1sg;2HZ`Xawp3%g<*a@3rZ=x(t^Hw?Y8@t!q%7K zg=v=+S9~p)K6{C-se%zUXSl_LjZ@xw_B*mw(&Q0;y?8!sTNivC&7?6;l8O~W-A9$7 zvU@3&(`sHU>un%ux}fMH<$8TF*31QmvX-=SiKaf3_}N)N^9IibcLUXyv?bGufh zh^B2c6Xvyer~7kU#-;J0EzFn0svY~GYiYIW)y0Z7Rfk7Be3aHjSNmmJSNX~zCNEH(fUzh!I8^zy6gzKE%*ofN(DGs5=BOzMxU zR@s8;nLQ5JDK@8~ee3C-1g!x`Vy>r01mclQ1npu-8M)N3MP)NAHF<}zUtDWV(F-<@ z6IBKO z@2$&G`tCW=w zLB5vzJx;#G_NITdXdopd-#|u)kDlVTY)(#&{#>1X&BbyEJ|Y?Z@t~Uld=3M|%iJg9 zCE8Y>;~59*ISD>2?MW9@AHG$Nxcs9q$QF@+V2+(?Z8os6no5;9HqhYIudt9tp`e;K z$=K!gO-flBY@iTTflmsDHKb%bok%*Ld+3;Lg-`$CK`;Ge_IwBFo>Y<9w(2#bF6(JG#%cb3SCQW`#ll= z?E80vR$25;Mt1gzw}S=w`FLeKFa+KoKa#ZySPfrr$p~v9banw!r8?E$My6Tw45rQh_w>1%X8?|F_5S=VT&WR%me@4>usE( zn!&gd8z(zbic-(vAerEob9){^vnQ2*WQOny2uF{qv;E#xQTRH}*4mN1ZsA0Z@MU2p zzi=<-!PziB%hZ(*;s7lSIQjNJ{fib9Ag7hz8m1R8m3!v&6s^5d?p)(p_veY_>^b6L zfHc6vs+JjBcJd9TIsFyy2Ad-fN>>%kZ!k4H!#*xOV-Cf(Q>B(&?ppO0a$b~wmW08* z&Y7NU==|zG>lC1xLy6`cJGjT|wyBi+6+<6Z{y(n10xGKRds_(s5m358Qo5vD8tLwo zF6l0jE|HRM=^VPHd#Itidl+J9_(tFOz5j15V6ouNJ@=m2XFt#0`#DZ!@paA3eI6eR zu!qF5YQ{WubW)jj{|k{}wwQbXVQ6URGmKd$7V?=p?d^S>hm02r zoYHaZ%l&Uw{_z@e-jV|y>m62CPCGhaTE4IhI6|PCYGaK z)$fiehEySUSUC}Uxa5Y&$VLc+;)@JU>Y%~&uv`PYN|ZK27r5o%eO z+v~1@;hX(gcP$*ii+dX76tm>U3s{oa8mwxaJN z{+}`X)2rri!uO{^ra8E#Brp}ST@~f@bJ(gfhQ%TKUb(=Ol*x5rcr`lZDxOx6P%)d7 z*Qw`Q+&q|BznO=Sjk_YYZp?16o-X5fyuN&4p-!SSDJ5iJFh01C@nOANik$s%51U^? z)7vcXNS8j;(0oTRQy|BMl#?qCB2ieM3@f^UabD8daI5!MhI3lTR7Alt0|!ea55SWU z_+dOF%G=EY)G=|DwuoLWet%NgTfIPM?*h}iq1e;e;H(Ae8pnNk;oc?-b5QA9T6Nm? z?%duqB{LgjX<4b+b}?4+jvU*dp^?8pP?!fCU$gkVDo&8!f~iO3#m~mZIb=QH;GiR8 z_q)VPYZfO)$0N+G%*;&t0a*`OYwHqS{9M%&>>2?^$rmwZk#E6?+6NbgLbq{;VFB4lct*V(P9Qs5|A$Ux@k)V)G1{dKk#cddJCD zL*j12=b-bY*C$#8efV!ZU0t{KT=wb878-Hq;rp}wCE0LUo)By_n7bzy$@&m)e!e)+ zL_MD0H}L_OW3i7BhmA2EtcHB8H@5zrq7pbqNj^c%=d9-3G>In#NPnTjzhiwmQXyPB*&{7=inB;dNYg_m5w5$lN^63e$dkAkz}v~ZGsXH&?q_!sTP1$O{0Jo~7~ zP}p2st7b->EtV`KBFc`b;`I4ZWQ{D#Co=M`K9H^7_m;K&9{BuKE94cG=5wo*p?!l( zcsJtxpru!lI`9o$pRe`hviTpOiOD#{_0tXUgQF9oby`JgJdZO;Bt75VpT0iX;vUwp zL7-`D?>mC|DmrITA7kuDq;d|!6MwYXhAR6Fj&d8xu?WVgL}wsA^+vfT%a|p;SiALR z7F&&}pT99RWa+!tw_~mU_}0MlP?84%)U40j>9cu^t6Ca(rn?I)RSGy4Cvyu1KA4eY-p@a> z|6E&t^2Y2)pM*y>ObI9HRVkxUqxb7<4t7}2C?Q*KH(U+PdiAkO%HjSE5&EKmTmu-O z?P2!orJmp2)5ahzS)cr-4ci@1k!Q$;K6Wz{h_~hdP~7-w_=w4kE{M8oz(K$(dp9tF z1vxZ~73C)(b7%>o>T@+dl<)?v@0O^g59DoZ+3OFPd&uzxEvcy6z6LtFk;9 z)?$CEyaw{OIc`1(i-POX3Ujt$yhGac%EhW_W@=qSk%e2ueXkh)GB3`y`T^QFQb%`$ zI4bi|eECn%$GC}NBt9Jt<0lB_Rv~R}iJrFK`mu+fkGq;0i2Ukca8Bbi{pBy-FMdo+ z*GJvpap$f|)_N&i`soMp)ks>St^PFIZMz<{FcF;i_> z(z{ghqp+S%D?Vn}p6T!5_^Sge5nRF|uM36BHz?RP&SFK=^^Y$O+G=SODia0`5+chg zHpfz7ZkU+Cg{6KCULI9AI!P$=Zth~5fS)Adw`BY0CYx7diOz3!n3C`p770$u)NA?8uh4h=A zeC+PvM~@w6Ek=VHFOikhxi@(#$Lpc=rQTlb5wbl-iPrSfjP01J3clrXL#4uPixKMA za=~_z?LXfmHqq2u$ZK3SV~A*cKpC=&eOWAv^V+VELCv3GndK$<=-+uh z9yHm$hH*6!n+$1%(=fl5vR!3HfSZ3G=4J8B+>(X$n8=bSdYRSX#W~MdxsBJ^JKjoY z9C%Fb+ZN6ha!*jZ_Dasz!fdiNQR5%mAA&HwihVi7#E)^40Sd|E z7M!F|Np*Pq#T~8TJs0$3O!SEmO*VVoo0AAjH|e%n8MduUhkXx(l}$quK3(EkWT>pR z?sL^D6mQZs0aVld=4*xKZ8BDlE~ZI`e|uf9av#!@va&L@;hqvDVGAmzmW{J?1Y+LQ zuyoWH*@Dw9b#W!trla(>3(g4CW;pKzt5FdRWz;p zYPF2SHwqp1xxi|8DFq)fSAU? zo{y$vm?{ekANyg#{M&L>pv&+`)1SV|S6xU*H1+|})vO%3nDL+g=^9Cq_QZIZPmAa5 z%*ARt6L()GuGdC!@clHn=#LoGi?3f}gLS`pq6(`qFh=NBYE;yq_f8|RNNCvMP<`l2 z$5b0>%I}$C*VPZ2ESYKC(9|?t&RXe>jPzcc_&C-jp(ya|FkN_K6c3b^aO|(>?{n2{ znQWeRB-wAxm<5pk5lqH|f>O6s4SN|`G0D{1wBn7yNLe-f$jON^Z9;|8IjA*G*Z1#9UkJt8;fPirg>Cun zgqGM^;fJQ9+Ni0~!V{_Al}~fr;^vohB%^>5`}mGD)H9XTOH3y17{;jzIHgkSbRIC2 za^A-%(2y5szhDGeYmgm01zI=MRE)pvg=M7wMo?e`F59^Pz02{o>sc859C`GR-S`?A zRp!7vR>K3@K!}8s!7QQZ{}bx5j03qY?Sr=2Iheg-Nd>KWo)(_tAsKwyvj1>)KVemW ze!AX`UTEMl)LneWPHpJ=uame_pzKvL&VcMVf_e-zpFt^YmIyuor+XoN6<|>Bb%+9FTzMEwmr@%ag6AyNgO>^-GGyA#|4}ToWnT8$i_IXC*(_c*S0uD(Z()JX-L1y8snoZ2@1JEz?gh)uW2nSi$kc%B9EfWCmC+J7KuIoC zzfwjUp?Ld#>Uat5_#6Lj1XUR9MZr)(NV|Idzg+#_hWC4C5|b|RTjtBG z3m3XExxc2#KR*MNu*P#XT*k%ZQ-4>k{f~O=#DHaaJOoH6|8wOZc#h2Z9Mzhr-HT#6 zT1EIDw&<_$x(La0k`)SX&Y(wqeU$%jn161Xnh;=i@NH1u`WeyhG5F6{5oIU-1t0F; z!}<4r0%>4s3vGj;0Wba+&xf@FYl3gjmC@r*<>kLLgS*9p${2R*>o@%_qS^sb{XvVYe@t_&Zw%bdoj+1%$nFf)&F0X$Z z&7oCt{KVhRJM#*DYye%>6lsRJlLIIilP^a6PcA@k8J+X#+V-;V41q1bk9}h}VtIMo zejZAJ$I}?Z!#vGlL-52C72qJy&AlG>UF9L&E2k|h=(I0_U=OR&f!G5`U%$3~UKz^t z%<9#O4uo;+bTLMy%Q_-{ujD`dl^30)(Z zkEI4~Zy-g>pbub_6cq( zG+jFJ21j{z;RB>>h*;im#U+w26^fp}2aZ5H6VhJ5K5Nipe>GpceQnCg|+eZp&q zIW{TTKB#hZYn;SK^R!zu&#_yasnSUd@{_qk7g|XFvd+B{x{kh2=(5s)96RsZ$%Y{m zb9cb&N#ANRwp!JsB42=~p1WJ1%Gw;6iB-|LfaqKeX;jfr4hK~H__97vt#uFma8$1L zb}}Pm{p_(5iDTCUbV4axMDRkNk3hJ|=W|e{wk(EiSL?iUwdJu}cMVM08Q*aoLCX}H2M$M&t|+|h`w*18>> zk*{>x-`h6pF?XIZ-6;p1NSE=N5W!P6U{y5Q6E7^Zcy0~%dRQzQxSGCjA#}s(yNu&f zG#X6Ds8XB{bc1JW$EZ53bjVqg4yU(?d^4*TO4Oej*k&W#$q)AbQcmBYy_nhfc@nL} zPd6`dZLg}Buf_~<#nT&C!=6P=tib+tT3v5;-0sGg^Dzm${!r2R`yHR71fcevaidcL z4)|ePUCyuyZ}#Cr?>*3VXK}YK{*iI95 zZ6819IE{HPT_EhpAH~8CTWp-%RY-0d;ucrAq z$|k-v^>Da-wTX`UBXFNfrXT#}%k~epL$}tenex3)?t~a+zF5ht>r_p4L@$$Ax-L3a zV=xkI>-Fn5I<4=|&RULd>vX6~FUC~pNizW0$?hU;H7Mv!qbs&9L?b3^@Csd21Q!p0*6U*UQ zxt(}BP*hNVWP3+gvV#ArtEx0H$o@(!*7u6dd;!T>>5Mfk$e*8?v3gx?XQ_5Sv*0E-RQo5v?ndtTo#n4iq5cZ7*ce z&vo3ncvzcZAXKRn^@n5pO#_L-$@oF7fJ5%;(cY(L`kUmc9{Mz^v9w$)onn=~5p*nQ zUHFN!uH)}quFjjd{f|$lj>0e-v~1D6OmeFgk>_}T4!L<=k3 zS_5F5u3hsLR*LXWdV`KmE4ERIIU4ZK$%UAI1omfTL>D*+?2WhC^|2qR)Zln`bh@a% z1Ho68XoD;))=c9WU*eib73Y;~8jZmF|FQsN^#TCN8_Mw{x>t)PSKX%laB`VmyqVP! z`N$*!4=bwpM|3sR1^g#I6I-7byldsn6S6#!-Szyb$H@4Q72BFVAeJD|EGjgV9|Aw3adV#eLnYZie|jf-b{k(RaIc7`wfrQ+;XY3*r|7O!8R1tXLmyP|s5i!}0TZnCzZE2qHhz}HU`#bTj}bQLK-z5nw0M#ir5jdiuR4bTv437ws1kV5bP*#x<@{8ujODD56wWx5ZU-{nb?P zH%0AD$CFrF<&$|~!W`n|{VK%tqWib=At6T`2llm8-9i`+lcYal5}1=WBY}NuonzoC zt3^>p4WQ7`!ab8Ylhd+=YLLfi`7Y~3wV#=MK$a#zlJxJGn8*cIQH}erc@oE20P{nC z3G#N~X)LwHMu_vdqtU3IK>j1z>cs{tXQ|(aK4<040(%rL9HANwmZhY|W!{-{B|8RJ$C?;+ ze3Nhjmp?XpT&l=uWv#z?l`(smjSQ^NNWCZVm5h}jQ;oh2U7o0@V=~u0E4?i2d8-yE z2J52 zbr$r(tJNYQSEs+Nw6ccSYUJ70+~v%BguT}Q5`>aG?5z7^e^$Gn?GR^`L#T_u*hnSn zavV=-fKa9VCEy>gJ2zgW83JY-?ERE__*hHm1OIr|iP31faCso}L6@*H_q9Dq1&sv5 zOQH}!v&IzptRX+)yRckXo}c}Z7{LaGoX!PlNVs)}h(eP87mQmAUfh!ur@_~%W#5tK zRM#Q5>lmD%1J8|SsuM$%<>FMFtS?Bn4S_m8#0ox9Sro~WsN-sOm8AC`Og59peBYoD z8-kX;C{!q_7ti5DEZ4285@g)}rc`cSI2EV)L@wYq?SO^))A$78PAo}5;dZqj zEj9qm*jnCWr}I1UoRw&7p7fi07A<}Dfxm6_vJ8~?+k1TNi!jM{0)dM2Z`wE;nxskkNt$;cGd)OTqgSgjvqTF~+8c1rwm!AbU8e&!OVy*%l_cG;CRUw5J8 zfR=H*3(Lf}lxmwlBK6oP?^nKreiAS@Ec$c{G+*!f(qe>4%Emf@#chN{-u#6t@OFXxqG_5AYT(noc@ z@B3pi_XiNo4LJ<>>*>pewd*{0@{W>cQnJRylsloa)z_9FQz}=58p2t$N~# z9n_q^xmOWwT`Y<-vr#nphKV{~kPQib8h*BZ{1|S@ao5@7wq10NcUNen2+M6cq9^F# z&V7BL82WDM{tc<$!1YR>`A-ASKBPSOo7UUxB#M9W2i00qz(_hRHKOs0wjn#LOVr60 zj4pY4o1b)dKR>?k3eQ;yA&6bJD0v$yc)C<47R8#N5mZ>Du5Qj_o`5I7FF!UX8(&v$Zop6BkYN$Xqyl1B|eLcaxLBJXx__STqXDqe2FxR@+lSQLD`f5d8yDHI{;~y2ObT}>RC`t zG5@4sZDAq;)Du+K^e>;MaHCC{8BN!Y_Sn z^&NK9IPQrrK)U@p`F)#Bp8ma-Qa?gk&8+DRd^&4gvc%@e1#S-nSGF(N-De!u^sW{7er4v;P_4A$ z>kHdijI5GAYXy>DV-NkdfVP=eTU+iQP~)*qs%XCjNmq9V9~aP~8$DHjxU6|bS4#o# zMX%9KAvQ1M!zn2IT$2AmuxR{MxxfIgy3M5O{^t6Jv{5^L&+FD}qk>srDF)xW|LC)~ zV_x5%V@y<=A}um{nVOILTAfZ;)Lmcs3-@*rxH=+X$nmtaJFkeuG38S#3tDCyI?app zq{mIdWi;<;8##-1n@-H@+r5>EGYO3xD`*&!bg#QfRhiVyF86*~*5ou!j2Ciqtg|g7 z(|}E+%e?0i{}WdTK!xkO-E}Q(q-uPPVleXvH0{;jAg1 zufhsVJumgCssBeRbuv8HedYB%RTQI}J#yv~iEY`@0oxmvM~HP}`j(oF@Jz3sySQXk zmqP1CHcV&v&FRg#j%M)hdiLMK1nsb-sK$e*@f?=StCz!^jl$}w})VxPS2xgUD!j=$+0;K%GdM&VAkw6-L4nE zX%HA$x8!p^+J~x<+i&v3RIY*H*!FmP=%-H1Y7|h`x2~CCi6!KF`@a4D>|@6W4c=^H zkLaxK0Er6-Q)L=fF`z6OkTqL`PeTYxHG8d%Ku=FUO@UC~>t zVqzjXvw4P4DX%Xkk%pakjv6ax)(jt>FYqAZJzo6z!b-rx`Fs`MFA?GiN#|m|5YDU$ zDQ$D^DEv7b8Fc58D!a=ikN=@|pb*E<8wtcC#xD~_|FFwHxgsxsFjq>8I z_Gq@Z3XuIjOG{3K)ZTgfN19E>Qav_{FoefI>pnWpcV~cz&2>Tlhd^zlHls z<2K(ZFNUC#u)S|M5#*G(i#1aGfD+>BK%x~}0ySR$f@3LsD;u?^RXA&C7U(F$T0u#P z`*8YLIbL_j>c3d+)Bd$yh5r z8-8|{m? zmTjJb6&p^v;z|Pdj@BVUvCTnh_ycl|tc`oX;VXuYPJ-DC2g3mI<=4eg^7hknh<&{#wRBkohnt7o>)p!sqp&KVfB8udDx=IdAcdN4f{K-pCkvk4*|qLb z|GraOU6C&8P@qIZI6TB3!ytq@nY6D_uaxrDuO_zgDPF^|iO!q_PW`L)Iv$W$^OQJm2 zgDRKN!CfsEzEoNM1h*DQZb;b3craxEt{UxcI>M6uOKkt(iQg3++;DwSSudU6&}ula zN7Cs|%#y8xWq&!~3I)fJs2&-v({_DdLc?f%N8PzNT%UIq8vD7Q1Y;AVN%lcQBdJ=D z*Fw-bQDMTc&L1tac`_+0(Uo%L-nL;PNf{gx%4#u|xkpQByTUFt$xbW;UqMPJL+;X*)Tc_+Ah2A$%w>;i3$B z?w%+^mCWf&I01k3(}QC6=>(E4esF79J%6=F_X{<@GdP+h*SA9et~HGA*!9%*O~`(J zVfClu8=j^M0=9I;{y$6b4owE?liX+nsX#+;X6|l%=d|!HT zH(_~AZFt`o{y7FgbIgj3GHm1B?OZJ6% zG(pgO`#@`PE#a8wQsd;ci(~fTK^tzI^SsYGg)4oj%7p1f(>3(?$z=HqZ4a{PSI-S% zAVK1;tOVw?WpvLjvZ=LA_}$MVRatghw*sW-WJmkII=2wH@Vp?`X~LR&r9Hw4f9FH z4N67FtOmF)+F^|lXD9H@&GiEb%ckL>`#Yqz4rNRGDH{DN-OwuOn4~H1!Kv*Xfx#=< z8x_srJ!q|83SIrqtDXYNvjBQtRn(|_3yS4-m+-S~HCYJ-UEOz*CJ{%m#=Z9q1=-Bn z3<(^5xM$^QkY#8Pe!6-zSPfaO()ldTQdNbvG-kxja`6BKVZ8^hO{dRRQGZHZT6*Ny z+?$MQBM|qsiImiP%`AYmYs-437Ll>!43 z%GrKd)}z0-JKU;x##8JQ=zRfFy_N!@@H!#hN z1947~A`gewBLbRF;Xf(I8KTnfF_&XwXrUMEO;!ddZ86s_m|!dnJ#lcP=*h>+EKtR7 zaSF)pT&Dv^fYU{ncr6yGn2SkRt4gYFNSoe27mOOK~ zOAT^qdd+q(Q@*HIIhS1#KQ(=xmGnNQM)oG5LdJBQR~go0+0PK)i3Cc%R)Tv){Vs8* zpcA@tM~X=e?jq7fpGC2cvDFWD@0oe)zDyq5g0qfc?XTQt_3;K3!}nR(kJgPz<+uZF zAAP-u$qkc)B!kXCjMd(!yG{5;jhJ)UHySns9KI4|s93J0n@J!y-h)4J@Sj z9Hmyx(mKaRoijt93y`O{D?!*BjGxaE`yr5I+QhR8dQ!7pmfRs|OH)#pymQhm6EL>9 zLcxSvlU2kWD{Ancc~!))_O3HgMPiwU*g^QE?TB2j>Bkz#a#Q5>{s!HV-jmdY#|2qu zp2OxOxm^gYLW z>O+3d7DA)qSnK)88rt~6n}p_`V`z_@8dm>$s#^WUaQq~mBnaA9i|1}7V-#q$dcSXhXn*DV)vVh4?BSG1oL8A9Lr)Z1l|+k^)CE=0c7YS_%&vQhTjQuT2) zxEE3W4I*e(w zGZ9>%gv=gcSlrV-t$KXAT_=5bF|5oSXcUsL{J!`>DOu3d_A|j76lwphH-+j_wfn(R zr2A&^H0w}rww;~fcUbP0;b9S?QG*|3K8c*Q<;B^?cQ>G-xm(4q@_e?+Ob?MNzIhm&QedtQk{ZGmo!trwN3VC>n2tK990|cc9cEgH`1E5Q2*%&(RbvCde-A+50(Ti zM6q{;kMISXc^C1hCPpiz7Hyb}!!R|3zqUybeN$8ZI$1iKZO1U29jr^189IrS zC913)jUP`MYf~B5mmax4!&X#u-6p``yN?~#Yq~fL`O*4f58Bwcy|Fp;rIr^u)30Pu zVV^joJ6UR{sj~P8woS8>?f*D)!^9jj#ivucGn+d5+7qoJTBYKae<&}B7PM{I;!0FD zRdT4mtvuD_Rm;2>&knkW1)zyj=a+|;v`Ni$d2(~R9u7=++4WGI`2Tq^?9b%nXby3Y zN3@);Rc5)vZGxyEyO!+u6=5J+rMKHPV(@xX`n*fvLp0L3lq7GEzb z?NL?3XM68rn-zvicQj{ZVq<2s9o)IVG6tHSdUo#9q>5)n+tQvS+wQdrqnig4@vRkS zjSDA5@|jzXYUuDTQuKOKe{BlcuuA?hIIP39`gWH$Y}_WWG-OL6CPW8&^<&m*9Sh$} z-VrsRY+acb7r*{-iC?kp8n%VsKe+&!R_PjReUf*6?`sY2&Xz1AhJ`{)BCQ9W=_jsH z{_~!sC`FpUf&ifMxH$>34zM&)#xs|1IX2nQjU=UXyL7u~*joD_uUTJ5V;3Z4m659G zTdQEvrmtTKRo0o|E54M8ow?N7ZBQ_6Ge~V1%lipX++@sf^`pyhC73za8Ftag%ws>$ zEu3KzTu3h7saD9VP$errFWR5Bn~A+F02r_oG%$C2tu!;buJBc+&Uj_`dRhy)lM!UM zF!WvgW#XT|oI{qrLQaO$x)bT8iL?5pO=z)rG<-%?UMetF@9jk9QY=6h=B!b%z@llT zXE&=8)3Tp`F?QfqFJC_Vs5~Tw=Z&*y_F}J|R4@1M72GKw$Z0dvm;yV+$N%ASHfKVa z+gk>2*67u^J`o$@KYeqFoc}Wwtf;9NF|N0qBNjS-)EH?n)rG)>hl+SnL})3|J?NVM_S1{pDm*nF@FDh6ZBt=8DOfKbs%MLd_(7wyd=@IHVqJT#daP}$-$p=NP}OH&@jNsl#WzCwP-iYqXQAS+xhmf}HP|dEDm+lY`4@W^H6lr-~Ma=UR+8 zG*~>~p1^4;rSf$=Eq3rV7?JL1>F-{%!fnqzcKQCG|8l-EWzfS=*&4PY?9jJF8?qT( zE_FE@Spp~EI;-!|(s?^KWymp40UN*$IQx!zZb@gN^Lw>REFt}B!cq)hmW@;}0G2ajsvwv39OjB%6KC)sDTrh3k%q@W*czwK^(0_3PR zdSo5OIbOihI_qJNGr{KCk(aQz`Qj=3>Sz@$1)j8j8suGNaeL{}t)80lU|TsIKJ0c- zca_{K&c8Q-@!%Wr`;b4X8*lbFH1NkXHYU zlK=3+$HJCE`1nn;*V#P219BMKUWbR0JyVH%Q<*Rdy|CZ2wBFlrhbRuj-Jjx)4V(K` z-Qx@;#MFe7TFJ#+3e7^o9!so{C+pVMY7u?Aa}Q`~xktSw%f(?N36L0)ju(p9vo?UFsU-_YTK@O54A>fU|TW9Ph0|^b6^f9QkLk*Mq1v{> zIX+$LhA9VZHR{BaDL+m3=DE+6n9n+HrlpUtNA*~pFzd_krGES1-vg3n{r79t zRI0>;+?T0^5$yNuSa2fL5>#hW@5kkaC zyRcY*5(ZC~tolA`-;@1QvY7Uh z*C)e2f|>Ikqb|GoHiRo7FMQ>gYXZOSE4DZ*8NN2zRaiQ2y#72RlhSPp zGR+q@@G(Ur<-J77OyS4TJz0tICQS*!xijdivZDNKW0PT^?i7?ILnjj0hc|w9Yv^hn z%Hu9CmF&o3GF5fL)8fpTnZie`X|Nii47to|v5vM+&q~kS9WwzGIRkhM%_G)>JFG2y zk1rXYHU6&?(2FMxuSl4zgWWB3;$ zoJ}cv-=ZYuc9>kB)Z68qN^0O*KLT(SM@S+|%(VyPs=Q9pFA^aUiK+o(5!cNS`z@7o zz+tJ4&g8VkjkDP+uh_KMUks8FkQTD_^NwYV%V;=?%I?F;)|mWh(y-F<51&+Mn|?5C zbgHn(wAWlBzL^fqgQg;}X}+TN*aj-DkJY~(rmQmRrY*u29i8y6>=S~}n2tJA;K#*G z=NJFD+2>-MYem9X6&heqFKm}|5=7KP`P$Gw-OA{)`aL?fCfWG*1*aIEoX=(D^+U#S z#z|WCbh07a z-XS#HnR{*O$)IQ8!eArpnf;zC_d>rmP7&@1Y{igoA=b9mKb_8dcUe&+33DP(Zdc^T z0bvK^ahuNQwy?VBJnS;#Xb#`(@9o?gc7x8BMlL<^lgiN3)jw*I7SyHT$t6m`YdP!- z+X+6>z+DVL;p6Hou|pL6;U4l!W7=p;7ERj{jhmveLyIoko9*cB9jKEQ6#GkQxi(W~ zg}e7|c8dD<4-qzT)Y(3hMJH+w5td&vVLH4vBXPQxh@fD*r@Fg##V>n1il4?`r^T)4 z^Amf8K-Cb~Q%}3IkxzKEF)uW1L@9*_AoiXnjt9L@y>B|rfw`MiF>hkfj2y~ zLqEkWoS)r?KlS0hgTNFipPmTxbeBBbZRYWygt(qp2&cX=CezF5h|hCIcT-tkLX0=| z$Rgx(=*Z}8&UP|zN0fW8jN#wIodw2Xd3jX|=I>>jz+Lu|k;>eZX_MT7iAz#g9LMHs z9FUTRdnnW7qix7nT%h1u=L20p$CED=esBHQ&u1&2AePmd=`A7Atp0^^d|6bhZ&w~2 z8Yw~?-aT)wEA%>1nX%#*ZW01sc8$*RqmLDMMf9w`f72OTMjMbkSxd$v=`&>?bd5BU z4rR^9*U2QLLsx!z80>ML9M?5bANhGdjEt9u^6$L%))U4+1Ca^Sl(A_ zwzitSzK+0VhIEW~fg55DYdOWCRW#tNM)g*OuTp*4c9X{*M;IpfbM=Z_+>K+HsVnb0c3<1kK2zN^l)TGr#2!09mqgb0d?5B=pDkNv70IaeNLx!>XCOcqxP^_-fR&iBt?4PG7~e9A(<3Ru@@Z2&}>i9 znGL7p(e@@wk`!$4!7RWu%mO^R?+YoVXW|+y$G|zBlyrr&to~wr;~qn_f>f?g$bLq7&aQn~>thyRzffRrY4OTSYz1i(p0C<{s48OR*6fNr=;}N$43f*VnEGko+xH(%_;;&FJ&ti}+z)xsI+gTcxM{Ja#BMP)r;lB0%fNkvS ztK-6g`S5dREiuU-$F!#xzakk#8p)Dbo)s)QIONU8WHp_BkmoW!r-ue(gr*Eed&Vp@ z$R(G|t4(!YykPOrTXN7}>QInt>q!PnUh;jxp=fNki}si$4`n%{nevwnPvRVM(mP|d z^?@)-juA$p0TRmF`r5wS1bt_e;gt#uLGHQgtKszTJF0eu)jqxtn|SX^5TXg7VGtHt z|0EpsChN474?>)oBBX*o(hDRmrVfL|ZOETB8vNkXJnC@nP5PDBL!`YQq}93K?yE*f zZt5==mTk}+Y$azSz=QvTp8?+S*!gs>yp@YG=u8;qo63p|A3ou?3YEWBlmmWaS&&IV zQuHQ?U7nW}$AE2zCG|YmXGZRcP4S|7p+Z@k?UE5<(@^3!q65A|`?^cmYZ7uej$y83>6ufY57+or zaK_+{r&~}@&r0-4ppK(@)wRWbi8J+CTE2E zUV+J+tzJ~#LPjEGO;U0gbe6ovDqZR(BYCVG`x`>fqgTBa>7+@Nb%+M!ti^zc5a#5m zTZPYcbWg}e5v|@H>CcUO3qJC)YmXTksC-F1mG0?n()=mE&4s!VIyBS^A&;SUy@(n$ zXZ{VySWz0i>?-MTR=eL+R`wO`Y_wY3-5wn+sSAHzK92`DTRd#P?@J2lf4eQkowqsw z>;(_De*Icv!ggI)+&zm_SNC{Wx&SA{l_X-kZs2k>M=F{3fOy(hBAS3jiWRD{0i4gL zjt1PjHb_Jm6(pL~VP{WAD>5!-j0E@hL_+yxI_0q~s{-Z>7b6ytc~jDlL*pDx$P&+! z@@}JkG?@^5#>FBtbSNGhD&vkv9yT?>Pn`vKGr?da{n|mDAbSPQ!VDHE55Ify_N;H2 zx8K>3fM&y|tJ(LG#1y{Cd#~sV&h32|N?AaB_R&wb2aSSyi#%{4eRLrOuy=pNdcAsz zC#F5wB1<;r^au3@ir^y0%Jvi~Q;v5*yMskeFc(h(17<@SJ;rg(|Ho`$XNyR`)WUFN zYi-;P{w8iz_z#cxn{CaOdM*Z>w(_#YTNMABp!mbVe#2(9eYnm0cErOk|DV4<7kr5? z>1vtR?^Z4UUjU0N^IS|mGV|@cqg(2K5wI6FYimpYy>phAE!qFq046IV89RSI-^kd1 z!Lz59~%8HQg|G5jU_x}=6rPJKbP<6br#k6f?LngE1Gr)zlNSi zv}kbrMD+_?SkTdfN&jF7-&g${JL8$`=@Eww0~w-+!8xT+DLUbE_gKoi7#s9)RTY)b z!%Pj?GVwG}v(G7TZy7#s58?RS9XF)j0XL;NaIj#_`C+bkjw+s(aTOsf3C0}pSMrKD zEY>sGH?F@BmynoG{$=*^Ynh0d8FfTtB1F6AQ{(i-OdANIHp;&QB=i#sYd#BIWqxg1w&}1RIjsQsnWPbML1r|(8w#rheXi$CdE$S~EiE5acNkvp zLLD4>y4>U>-t%58^#2w2mQhu0U)-?g0Fn}N1f&HiY3WAklI{lS?rx;J^GK^S(hbsG zQUXeYba%Y_c<=pR?ikM)@0Vwc#}5q0K5MPL)|_kBZ_c$gL!W6EmXdRn6K?&!!>_VN zRof>B)Qh2lM)EJ-WfTc&DVV(MWZ&%i9>0|u3_eAH-}$L_*g=Jt!H+Di9=05SogEZ? zdiI@>pub#Sl3R46bE(;d-N5zh_GabsMKB(x+OF!?6>nwFXn{|k$Z^ePw9^8Vu4iUS zT2vO}X#$vOTJNN3j-6K)ca*ZeJ~}4Z4CAV=G24(P34Xr6X4rmU-Tyf9H+pfZFLXsk z{aKR#Gq*XWY#aYc?%^M(w!b!7Y+7Yuptb(N_LGgNlcf z0@yi3%27Ha=NI$%p|Y_yFUMG&y_Rt0+K}janTpg%uf!N>ro4#wJ0}>qu`V!XhpJVZHD|VSVa}f z)0_2sI`sP$>QqX=aYDqQxNIy+znF0=RmG=4C2A5v6x(0PYIXZO^IUZR;$%xN=kPdP zr6rKY(7hi>xx6T3){)kp9)v(f=`fiVX}B3< z=%g_z-5Kbror6-CeBe-M6L;A@aHVkRgN<9NKyw^TfuNj>y@g-{qj#XF-C18|xV$w` z%2!LCJSIixE7S_(b-aAuL!)*ku3KiOqGPe&@CW0B?}=37jNYaB5h@x=qSP4nkAiZv z@`sUGlJ!TPD+&$e>$D-RJEOM^vNh^`{Fb3K$hqC<)X;ETf%n>jVyZ+dqANUk`Me;6 z#|yXuK&uIlcDkhFIDk8QT`lQSIEmc`(O!i=T0WPOtcZ-{dBIyMuZzfaM=IxiIeVkx zZj)^lvhB)+0uIF48HdgrwC`5dNTo|HBVMh=2akZ8W}-6qdO9_Y-a(Kk{UlfE(*2PY z3-tO2**M9aN`#w!%3=;Ivw5h$(_e9^SwV>CsxLtQ0-e)d zzu9#PGfE!?28J5m2&dc}W&v(whvM2W+9ic6|D9Yl-n{tJq=sX*jdIVcw^APV$$G!) zxi*7kN1KXhP?EN=H-bICWTHl|n4TI`sYvx_24JlZhp?{LciAQ_^rlh=rOn7PT$OsY zg-jaVy()5(*A=;>P%JS^IX!tKg__f#KRf2h>s3L>JiQPSHhym|iR)s|v_4daMYJaq z!27nRok)Q$G4O!!+-vXJ;9MY%?@2&cy~Hn}tG5@NM$-hOm>+(cEil`TbLK}7Yaa>( zo9GR{`i)@Ad!+l$QQdhgn{emmmjPnyggt`l=;K?G&2W{ev3Hg(mOOUg5b7??=QK`1 zR+7(-QXKk*;dOA3LTER8_%9l1IAuHLu4QvCgrS_4R-fSRZ_=NlePZki-75ObUm^6| zJ63=wJue$~YZNQQZn#l4_r$cujZ^GLge62ZqubmrOHwfvi5<0;ju~O&cQ3zIMA2l| zOpQ2ladO^0QID2(ci5I+MiFlLH%K^RKM#Gh4K0^C>2z#d1sJ!p)P7Cs@ zz6#o1_A^r9i}p&Q^V+*B9(1m{h`q1-Qy<(peU^L@oym7V(};_(P_U*hO@M3@zDu$YPO8mRgOTcHP8&Y#!sOI_PZ4=^0!?w2&$wBz#G@i$neLB8E=sEH$uV$d1238<5D9La zR$%SNGvUf$K#}5TqX*a^cP}~EVKqz`SxOyY_|N`s#|eu!KXQ1bM=yR%E)V}!t2)U+YTSO8NT#!? zw2#}cRiHY3kfKO&vH3+%C>psI?D$(u^M-|{-Ku9wW@wTiot#!&?iQC*My36fh z8mEj|enf4=^vAP#Mta>5Xmnbp0y<)=)>uaM3dWYNTApsaAD?%jGOC;TepT>ZF$}}* zU=aK=t!L;v=|=vi@}2PGy35*Q=G^oeM^sTKp)qKp=>pY+lJ(=S$I1HQ9JDsLR_4V+ z<8M}fx9m#rpC7?Y)h{&Pn!>{whVEgVWkw!Z<6CxaGrbs_53oB^od~JD$l3jM)AS1&`xWso_0gd~O4=tLw zHfhmTKIy-s=r6^6jwm20dsPZ`+w^D|Ehw|IIUj~J1ucND0k*H0+d^xQg2R8c#gvXw z(-y5JFIwKfd<)!;z0Q4vo&LUdDBK5Le#UkG>XlfSZf7zA7`Z|B5| zsbC0Amuhcc68JY4Ow;0a%~&Qy*K0SHhxcSeqT+f|k%CW1yj0VJ*_?m}Yvt}Juoon%`K@QwDQ>=A7O$tCA zW7C+&5}kij;Lu>d#$)u;^~Cl>JuTpCp=4rW>hoyBfr{5vW^-?KVjFKsfQ$I}AHR%b z+W7k9>X`X0e6f&7vqXVAvm2|zpz1)P<>WGVBaat{>iV9v=d1NH_Q;zNXjG}4{&FdY zzWCNB9ni-Jfq7bnA`5Ak&4t$VVA2<=3Ddmz`pYuXT3W101GN^8wSMiX(Ce1p69t&R z&Z9%JJ#HVP3xBkmU7mOYm_G);v~Toy?Cy#4Uk+)%R(wB+6S!Jx&5;vQHMGWya)M^LfOzR`B}bT-iRy4J#<0!l~xBNk|97^wfA^B zchTU9yYZm1wNy$YN<8Jzn~b{YI(v)*%i?Rnh7Y+vLLi4m$&mNyTOTftw#PmM&~@mn z{z#iOi{OTX8P1j}wWA@hr2#sXK?(lwqGk~N4AI&IlSd$?EZXtZhCk7mcS`oi@{ z)`nK%XhUxbf8q&>CCe-w1;)onI)Ipow5mUDOR%>;23P(*@h&WVl*>Kd_uBA41pe^P<9`Q(Jai^5E5B~%?`@uUIV!!6w7)=5 z%H;Sst#0woaJR|r;>DD_wh^^Os-IJM@PIBGTNqDg$jtm}GwWQe!xD{lk?73iZBZV2 zg!&ZhU0FvjR02S|;7(q;S3)8h&qdymRK;AkIJ_6@fdG>e}fs|KqMgBVx7hqO}?_J*>lz4(=M;8^cp9GF?Y)wCBb=%IPM86DttfxGwNN| z4*MW5WHekby{dIl_>l5tH^+scYqMkME)o-HrG(=pf?E8n*8k$$MLxfa&iA_?bv(+R z({TkNfR~eng)T1jrys=XZ>4?hXlN+^sRaPJhwv@!F#MZ@_H9AH%i6xa)Zc!PZw5O3 zUvJoUu-?NMsFpmdjY16`XY{v&p%IwUVBRu>iORl~3n@X2p4g>N>q2bjx)@KU=G7?k ze6jtyemex!s%W97>Zx+In&@2jOW$*hELHd+oVe`!^AV}A} zRCkL(a=qq!?PTK5Wx z=HESpMo=!q+sbdIeU9XniviyMfi3>}-IhYn_r*75eCtmzY~_D_JYTjkhF&41P0F!}G$vjXA^2;w zeIzkrL${>sHrDP^yZ&}lJ={X1RqzPGlL7N$gY9E{#ak5Mgh-EF=XKV!8-AVtLtflr z+tLaq|9oScBUp}FSNX9qUd8G7WprBYPqCkf%{utj!1^D#4D;;eDO>UN<*u)hBY;KP zGH>TItD>&=oOm|jHhZ-w_)O1N59y|)gRAm z%@OgO8dDJbgpYE*!Jk-=!SdBZDuWdO$rR+bvSj`DsbD!!F@iB=l63n|SqlJqB8h`) zyR#7AW6YYO!21aTp_b+FLNLyk=XlUGy*>Gdz=~wB!;>>hwJ1K-I9s19IPs|S1I#j- zcBs$(8!rKlgar38YJ~bucwkv#0$Xq2=Nyoi;P5;P)TAP=!LZypv?h5=kTBod7 zLNjtaqatb7{yO1k(5j-JcEnu5@S~UxL%Sx%d1u~yA1C(+HgE6;_PhSD{lg8%KGG+R zQVzm$-bfCVGCeMKmueg}nk&=Oi%*Gm%T6I%UAKi${N}13k^CNC5a^Ns#!7=aWQT$u z8xPEyqXdSu9rAJ6%T6TkiB7>|xlU%Z7bG(3_oqPZZ5gZ*yqT3!^GIkLeDlr5$6u}9 z)wWnH7ObA~2@7XsHqg_<0e88w-$#z%MXx6HPhQba(6zf=MLg@BYbCH58DLt|@`tXl zXDMiWeZ@%O^?H3M#qT)_B{`pn3^$knJuww0FPO~pqJV}o8OLGTz$TW}Fs-=1@`>eLI_m!>q475&7Wd`k5GVER?%8^XL#t#jlfLUFnRdlZB*W4Dt`jqaIy zWzJ@6UHGmxt@cVEai{7ROc<;DUohd>_fnDNWfXn9v<>%zn4c;*1F`DHP_;UL55Vc=I@6;6Q6t&uuOl0oYmNR{x z>9u`+zn!R)!q`#MD)mt%q9^y9Dy#>F1o^o{g~#%YEga7KSBO({`Cj^H1sf#fu5_?4 z+X<5OqhKr^ci@h`Y(c%scP?bn`c%M#I5MO`pR?(RCdD7{X@Y90??!=le7RMP-Q`6= z*;5j?ygdDzgC3^idU-jq$pnaHPm@4PAjNEQOx!rwi>?3jXcX&kAv)l%QlT}Eu z?pNaDyM4%^@w*DgpX^q*EJCU{dh2jLoldg+;Y;@ppUl(}-HKM8Ctnv?)uerkZmQ9x zVXL1tnOj$if-7b?sd0f{ILXOjSi+<)U)=A81#YvXd~aaE>+D# z3%Bs|wJR1Xb~};nlp7#6MtOQsGNeT>zbFvnuig9GoaHh#P?)c775QyCZzf=dhe?^p z*gPFS*jXu9oL4f8mRF2n06UuH$tc(N8nP)XtAqLd1>x+bsPC593h zBq-#wHozfCaq&tuw2gMi&KmOcDRyj3OdvXXSwhe9I`jw+cW21v;;{L>Fv-hM#%$+3 zx?3la4dVx}j&Il*J>R>P1XDSkhc8JPLO*)K-Jl$qkO#HXi6oD7otc7)O;*p06&955CG%~HaPYRrCrtS_8N zuVC`{;Hr~QAu(H2U}!rs9D+{Zn>xV0G@AO2pQ8oZ3Toth~?2S}W9a%G<->J+udjds`IMxVg>;qFTDueh4#e#M( z%RH*%=`z6XkkO9zjd76(Lv5}lVx!N&NXx`~W+VvHy5FqGp@ERMB_z|&6sLBu&YjKL z65^sFBGA@k;Rl}|TMJh?+0~oKYkcyT)Z#3CY5ptwgOj-%zpfT~(%qn9_>`$Nezm+C zH7=?Qf%`lrd3Tbd0$8=e`qsIKcYQFDL(#cGj;6T(##&rwkJ*k3hlcq}QwC+wiF8cs zZQ)B<;%bFEn$rMUG4+<-Ld&n$0z{3|L)}>|9J!|FI7XUhF9+St!BCBIX}3zUsdWIT zE4g~twM1lN=sEzFCgOf%M^jLAVbF-*@#7gFCR4<)sG|wGx3(PUFAi0 z6k1l?hpy;%k5Bdv2>68+ajD(hP#5vw&rUDTt@(16T_y!q%ePs9ngJ@Wwcf?gMVdTD zfp73V!EV|bIpFqCs=dr_WlOfzOQa#SiuYZ&MiURW9(#j6n(xdwYbQNF*L7^xbrq>r zYn^$NocO`15|KtVd5C%E=}txKSFd#`X%4n#b;Y?L0Hcj8GDwm7a53Ox6Et2vZ*?&Y zncf}Ju&}l?9+?U;UFadKGdA%KVOcNfm(E+Um}37@l^6S3Nvl-$70wX1Mp%T!)c3E8 z>ls{i?7EIJZ)Pu#IeqwXR=Seydcrw`_%yp02hX@Rxouh3>D2vC^LIOw%~`ajm9){> zc-f~{xRb?~yzdP(o!;)>os;eE?Xj~d6$({YPBm04=HC`tqq3f=#Z7bW)%Wcp%I+Y)cDV;CH z_nS1B379gw-+FFP#S+8Lh@m=N-%z;Sq+~Scy1-gNbK4aONi;ht=i-#h(-JMCp=rB8 zb1M&;N%3oJoYA?AHh)E?Xb8#a)UEXk=#l~F(-7!>#LPC50ZpYNPJRku6fN|zCp-K_ z=&6tul-1vWY7pVAE`b#mMhBqSswdTXv62>EieD8>^LE`1XM)Un6CQt0FW4D`&dBN2 zD@&>`z4#kZ!xtzC>2{(|lsbZefl^I}ef=6y!TVd0ci&d;fP?${hHGcFX5r2&=EK}{ zDOqXYbvzZTnBNsUozv?aEav$1Rt}Q_+vfel5WRu4WTq+)yk!j+oL_8Ak%hP}*Xma~ z#NAG{UM(fZ=BelX-fLL~Ltat4p_A9O`eX0oea;Bcq$QqqxPN0ZUVptx$XPJ|rS}by zyY|}jahi_&3trV zMiKd1rQ)sdELAJ2Or^UWc-CnMj&O5Kwvo{Am>yvbHKw)JabGs$j&?Za&nQ5ZPY4&j z+w+KF$tUgnBKtKa5|{=ZB&(B`sE9e&qsVwHr08&B5#5`1xppl-LfEY|d*>W#@8JfLhI)MS zu+|MaiEyka+3+~ZqzQZpr1wgH6y*D?+tXr@HfyWqMW>^iRRy2$N*I=(lQfgIhNe(^ zXA~xyeU9Ubo{U(zoqXlTy8Yp{zw~k4q{$(&j6w7pS8qF4 zm3jteLj};S1WxEs`}%3Tp`#U zx(WNn#)b=sJ;nIM7R2%1!f4Op3QmG223;EMVD4FEp)^!xASHNbAy{6+OO7~TAy<+1 z`Xzeu_MGl6HpiK_k!FjDS5iMyH)U2C>tlh9S7BWQy|uWh{6dAt=zR*gQ~a9two$O? z6!Yxvx=dF_dS`ch8TcqpH<8P{-)Cy7WHGIzZ}5Dt%UbeWs8x?PXbf3mjtN zy#x6L20qFCB=Q|b&9GA7(;3SG_m>!H?33)2v+*mNqy5?9SSz&MtzLMvYzv4@XtZ6E zYQKA&llB<9g^L(j++|yznxM$$zI7MSixAy*Mh>YCD{EG@SxNS^oPanISHRPDdi7I% zt~E2eF{h)LN&t=k87QfWh42K<)c4KxV`423mMm*$cyt|PA!BKGQDK_R*u6l6tLhp| zayCsXdZVuX#K2IyN<>jz<0(R$Hw83T^3a*RKl<8(6gpkSdo3*l(nYzr=8U`2P^-fw z;;F&4lML(#=R0-3SdQ~ zM;b(g#Cnp#wX{R z_Lpi~a7g&>A$tU$jPD@?()0@=#_o2(An7DO|AEs_fg&d;3zpwxeov+nCNQlC38GUA zeo>13`UAG#1+ihQgHv%l#C;ADT|w)BDNa9?PC6$9;5|T}pf}AVlZqZQIR8T&0iYtV z3P7dsh{qr8@cs)y0PxRCy&3mKL%!-@tN#`eq2gV!wm$vS9REtj0tHrxGnx(nW9}ZJ zGf+Xu!G_)Yy2kTzK~}@`2e>6QW&$`US>Q@j&N(9U0j`lHNQ#1YH*@XcH)CCs3XWu0 z9Etvl-^@Z61Biq#=Av65TkA(;0XW^{e!$A8G|~)HFc2I?<#Emf!SaK zBT@e;g#u0Lu>-;Rzwli9K4JsY3wZo>fSN24^|1+B%qjvMlM3qS=l{-OACCA7L=%{ zs1q4U$S}MEN{9_zMMjW1iv>s=>`S#lEqkcMC-wj>r#J4}Rov7Cua1JQ5YSDcx7Zmu zg1Z!fS(ugs8{rA%dk`eX5bm`4*KBUXkmh@|(PoMP`+&ECjQe>3;P^~nK8`N{{xCov zvy-(UG=%^q&PMI+dGtH;KN59kE36$4OJ9t~-!2WTjW5fwPC^_nUC zAxI0nA8mAD%s}Iz+_7Aa^>$y zfOU8QC}Y&o%V>W00TsD69vGO2CWTIX`ffn&KWHNLVvVo9{x5=s;Z8INlBi#hH{r7g z${lQg%`-4y{_MDCYFh}%GR0_KuiAJHZaQQaoT2pxXOLp^{h0@5WG3vxka49a1?mVQV!ZIqBXx}SLiK^5{3NsJ@{5_)_6E_=r2>_7Es z4G^Zmt=Rul^IC5SR*2t>$wN|K03c}tW3@W&L*8q_*bM3%dic77{6}z(y5^M(4|~^P z>iO=0L;jn zZDt^?urzy^d%wLoje6?<2QU^NA#YLZ$!I2D;oKJO6j0v~&wDyKatd375-ysF(3Z&XDh*jUB}Z@ZRNYGZkgESZjgiMM`e!JJ(<;jqWFmoR55zg&~Z7!H@Ofx zy-iLk!BX}>?k>@7jT&reMJG}|OL!6LMPtI zkH4D7`<{E-`gXzyeM1iD6`y%^3tMC$OYszR#n_(T_w%7uA@xNN_8lguhd(&(DS)Y> zzr_ST)i?V{Qa#2gbRpZ<1blZxJy40m@@HFa0NaM^d`Shx6qa;&pVE-&VmEfQ$^_Is zKFIaFAl+L&@@L%ACxRg1fqa@2(eVh`0eS=IK6DyDjl#@~eM@MCc<)N#GZzt4WA~^mr1SOC7=;)+5h)jg2vk+n42w*3& z%Pir5?TinGX5{krVdJOm7=1pOaI@ZfQ7d_Wy&h(RduQ$ekeF{Z6AD> zZd^3AUM?B`_qi%KNJijhv8X`}np9)W~kHzdY; zN$NI{5wKV_-Norfu+4H11X!$}az?4ylv&BJP!iwVgZO$o$yev6MB}6>CCp`56!zU< zqvD(w21SB@@&ks*!jmk8?gYNc>)->F+5=F87n(o|9|5>x0X$e{F!WLLYrNta#D}Ye z|KJN^6L~X+<@}#iR6D7j?_q=9CgSzK+XP6;WnnV$)*Gd+M_m{UMy_`=y+CmM%OnsJ zIVQ>g+wrY%Tf9R8mD}6E_ysh1n1>i7u)w9nLS)1BDK!jP2>2PMTwZ+Zvj(J|8}pB| z@mFWxX?T2hX}llR4L>a+4cq_O+j7S7V5r_((=&fKdAT+Va8N((nhtFS!hdw(4)&O>65iX)(5bsv!K;x~#s zu#K?cE%^@Y7OT_fA2^^{f-xvCS30NOqNS-hVqKK^1;WjrP)CATz&TbK82JU|Upd4V z-Tiw(DX_w|j)mr6vxhDs%5L1VM~{%0B!u56{r|a(2S;K)$NwjnVJW)VXTzD&81Pzw z0B7Zs9+Mskum=}m?5l&yo^=ZV-e6S3r>F$D<{P*+4Vpzp(CR*Yu^}XDgR^h;{aiv$Dkgy1?dusp^XyU@m9e9%V-b^YuY2Y6VcrF zZys)X(>mZ`5W&~~w=Dx7;U08hpu=-wrOSd);8TE=fX)Id>Kp!wsI;yEj3GYkN)F_J z7s3B`D1p(~S@1VtgK;^(U0Ll>Id>4f(r(0{9T+9}|L&lC%TlCbBU8vLIt( zHnS)wu3~>WjCtIxW+qiA0dE!*`nCI5%>`DNLJAM>s)OoBm8yNx;42VCE+nZHIL*_I z@=#a>K~~@(${*v*&k){*eJ#S!Og2*PvXMpz*Fj{yJ< zt}qqPdr-&Bjnw={j6TDojhXzyC`7MddB`TD_n?kSAy?dFL2vM^^Mi2~pJKMY>~E}t zpH}RDXvX2c`XW8JQRvUB-Ldq1OOs9fcmKBNeOpd@Eq3cErBg!9_DuO zF%}f~lEd)x?oaN&)<1h`iTPzg>VWGc1HS6+Kmcpq0NA$=dk!N|4yf*W)^T1AJ3*9lRmzh$>OSHz1F zjvY&(xEu8gbNvnT$My+nK~caNuMH_7=rr9(B;$g5a@WEH7vJ*+;26s}SMdS zxyye&9A^~pHB3HkI8IZuhdgvbvR{&FbE%f)5Y&3#V)eJ&gXKlx$a3OFd9o?IzkKQH zVnIA?zh7SzPrMKr(S?s@eipB&i21^M>3D0BtoYKBYOi&hL)`WvH-~NJx(i>)i723P zgM8|FjbMhr&EHja<=3J5-;x}9(50Z56-_cYJRgMRq-|3HgSUxUC z?nf_AvAZm4eE(+pxvQm8cf~#&@z7%hS4}e`g62zY8+D@dDcRlS<-7TX4USFHGFv$W z)xYhbzuMx?tYnoH!Lv@j_tVr_Bp|j$c04pB3|trXWRi}dV^PDp3wbhfGO~nLN}04? zP(#RszGs0LZU$X_#772_ZYmRuY>RV&Y^gO+Q#l7l>u(+`*_sHk$^3N0$yr*kh9 zP)3V<-Y9uOe$?0m3kSDbKWkxR${~AWX;boebFxn0Mt|P19%;j;RM>6JZikLPDBUJK zFkN~BMaT?7W}!(c|6S3gP}5lW1E~AL!cOtiww+A%MZJ>{HnR_QPCCW6iw+Q8?p$_! zeX)4w4F}4!6Q-59!K>!=*WPs(47Z`rz+U-v_b-Vtu{2zvpa43%0NpJtxyV`)Mh}y_DdlSQ4s@3 zU)xq_KqcfY^O@JZO@${%zeOn-_qRt_Ik~($WZraT!d6NYEj)K@??mz!eYm@GzkZd3 z?@#;;`H-x78=(>VX$mv+v+l6|TJ}&~+4+04#!LLHrbiwQ9DqklkH(Berp@JD_yy9h z{5gh%d{oKW)T-I2MrJdte5D7AXb$U3N!c4KBW85(T7q9;q&|8B1engR2=2KT@NehX zyDIMQ2zt7B;>-_!`@WC_U1aOQ>0B<6Ve&r;e|#%>lK8h1Me2(1{m~0ok6x&}pa59X tm*Ja1V|Zm-);64^V%x6RcEzgLs-R-qwr%a$w(W}TRBU6%daKXrzP_hVe?Rt*J=ePC z9Ba&b@E+j`auNuzxUe7~APCNZ4UKm*c zB~AebA|5p+7dn4I=lI5J%e&k2^S6NOx9NOj=droq#KcT| z3&MJl^HZDtXuP1cejwL^=-Xj7`h6KDCK7$09@f!cjup5`U5?Lu*0=VV?@QxAza)+-L9AQ0?eq!L@zrNLO^r?t z<^VAh2eAVuWnO>-VbRr?!Z|sFcqN$!1rZ@QzC?oti6)3z+~^Fy1YtVpsYO9L*{hu8oOPTX(OhmIr2Rw4d(H5^0x20z=)R1p{gE1GgbF&~TR6cm1tj>E@KMhOff{ z_=nwotbSPEP5u@+vgHQbIVmuGT89+6K(ldM!KBA`wCN$<8{qG?CfWCAzJ?+s1`Fyp zCPw}u;m`w4{(>S+tsKm;e{8L3jes{FkZ5KbCmjpD%4!e666v$! zjEKJW+4$ma`s(u-^xC~`t^TD13M9xA5Of3zvL@6wo5!!axdX_!p14OoV1su;!#YSx zNlM^T`Rr*!T&~>8`d$0fgee3J{7m511s9Yf$Ud6>B!^>w%9XdQOnA6a*m`F3OL(7VM!HhEQPh8XF!$krpVY@8q!DI3Z#H0>Zv5EdyoN}!~;w(vfQ6iN&7WSHEb;~=&HWL?0DC>R-a z0^w*dx(E$vQ+%-`R3Rk`I!>&N$RVk8yz?&(BSr^s?m%s^4?%qeHY&L!Y(6;zg(WIZ z6=)hlXHZqYa$)v@cEzuynhQJ@M6w|!Vv)JYvms`@jemsB3YZex66MVEoH0Ch2Vz17 z=8ZuAL}!A;_Kaerz;pz4L~w+f_s1EY(C4VrphHswuZUnDLap0bLAT<6z-%UXh2@R? zJsiKwWjDw54e*5lIW=f}XmOixPj?5?p4Ux^k4P8CHo|p8VvqIu;ECgn*oUx3L|BYe zFki|*Y*#u#GC@K~VorobtX@b;YD~6V)I#o5#3O?(7RX>ubV7H61ja6umMd#VCW_2} zLIXn()Dnci!ouRig1`b*Z&xpEv}h#%Yct+DaXv0G5ig-5kunY|fitm(^i#&aWV>Ld z&@MkL?^lsoA$Flg(V+6JvV}4#^&T}G^_6mW@kU{OUP3-g5o~U|psL8Ce3NK&(P7C_ zkxPkOF++im@HdIT!kxU?V*3Ja5oNh~5mx!gJd9lS!uulGk}lcT1edIs47rr4kV`Th zlHXt3aXiSr33QQk33x+#e|hJ6mxttll!ZhJxr29xufgtSt!J`e@?a`v-qgo8d>b7c zEgat;aSARAHqXErqMNXq!XNU=Y72Ew4o(pZ9*QQ9F7h`H!04lyu;{}b*BX8aa88WQ zlFgw{qtCg3S*PLs)&beU=*jVF_+X5Pi^z^h6k`?R5+e_A0%QO_0PcX_fHUn%ZAfht zZE|hKHkVe2)~dF|)+;;tySQtrTen-IJExn*1TFTe<6|e+pgfD5+WlmPa#ySdKg(5RvCKkyvpgo=0M?4=Ah%?c?)}+ zck6sR4%-RK04oMtgJF&_iOxv%K%JM|n1q@{Nb|0cqK>F;qoAvdqI{!Vrl`q7YB#ti z`5e!!YNMKO5q=tlTapo}Rks$!lggvmrScvK85`0uEE_E*OCqZ``6DBziL6PuDWkF5 zlGZY3?s7)x^!Tjsq;sKYscDIR#=B&s>ZnM)qNSR#gs5Um-;aZdqt)PgEpBpVvUbhx zw`AXOl41*U-^yHT@6&+dPC=f;x(qUfIE5yK^2k#R1feA}L~%&5X7RiUmRO8ZKc$T|ls zhp`*7o71c3HT^~Ph2UxZWecVkq7{4tsSptecaCU)#Dl|zPlpOX@g%$@yr$wto(nW2=)Q4N}eRpQL-j6ifIlh~XWcFajs4LZIS*hl# zZXIl0Rn91p+RbxYeyRq~4%!cTo_{H+K>d#TjtZ4PmdKLWomKa3K4l`si^u)4@?&)k z{WfVPX}OH1jB_e)>KWkau6yY9@%+yA*l2o^aME_tfwjTF*FojXe6`z0J}u42y3bmz zH>{1=$>$^XE~QGLY9e!}o$_7Hk;BwQ>!Ahz2=Jl3x`C(uy;@v5Ym_%*Ib%B0m)p0c zx8rA}LdCTliskHc{?+nEO;>xheb*)AdNdGEAksTxE9p3uE%i3_FhzfibR2Wcdd!m+ zownSTWlN@~O&v#rTiIA~QKw2lM`u7QQ8BVKx>Tq8z|HcwdFo<`r>;GL7w9^770`j= zDzMnG5X*_p>BLUMvGjYdLw!MXK4}S_U4pZw#jRzcajgY$i?e-ev3PC?DEKCHAW|I~ z9D7V?%tzr4czeqIR_xvIwbig`zQVD3yv_19{CDE4&D~|{x8ZNz^7q;NCyVFSSIQTj zD>WOwpXs{|DMz={nR>sv%y8rI%si++>)jRfYn>&{ORb-NUGJ%%*6>I;iD$>)#_$vI za&Yk3eET?T+B-|?y9EjbL44F{&YajRh4;V zmqyEvoKMu3gYC0mgyQHi+xo3`j>$jRhp@Wvl3zDjtA5FQDtIipm>$Y1)j7A>%%0I* z@4oq15bEs{Vq#8uI-~Ook`5}N1kt12!S5%WA_xH?K6%PgeyjJJ$AE73uR|F8@>}eQ zG+DuIfwcWgVyJAt*v>b}^X~-E4@PqPgy`K#C@Q99aAvsXIkWVvxj63Wz_c#SIZeEk zVs1MCi}uvU37>VR^xHYuaKMeQbALlV&;W9`4%InfelCectG>^H{5BBwRjPk%i3Uc( zLPcW1$E?=U!ouAmXTEH~yPVS$1YR?GKYB98BXf{woVkkGl9Q-Oqkf~QxOS&GxnaJg z#r0Z%@G8wdf8iwCF=w3YrU7qX?u_KveQ2xNA3eoL;wI*HAz`Q1<2MWy-bqw|q^Hf_vTZ z+(8s;>OhT~$(qTD@%X{@zS04qw$7+$)@R|ioW79aZBy@=3uj}5n3S3HgVfPD4l(Cwj)3RoVlZkyY|Ivf%StmIFWnNEH(y3W zfk>`I-fkPqy36suaeg1XiI)6m4Xro5J2A4A&=dQ7HuayT*QJ85g~#s%;Cb<=uzKyN z&V&t>ZeS0r#NLc9BW-E>W-gJs&=nCJt7^kPsa+h=LEz4 zHtiVQ9J+~zo1C017&)6vo$~$hQ^QU;l2v_T`mEm$;mKY&eKTtQ7@N|j%iM6XV$ zOz$~sj8nA|H?ch~B%wGvCHTRf!1Xss7t=dcpvC}rf#}{~K{!Q8EP2{+=1_*j4^gd< zAHf<>D^F`4tL`fuJjk)UyxCm#{iCz1vj^a_ql>H2$Csx&CnskIR|My1J9rnaV*=E~ z_%nVVi?_PQRT9?y%A9uFyw@*w=h5{u#v0P^&- zHR_xK%2hBmmR@ylr_CrpdJk5gGvH&;#R}1mfVZpMdB&yrc_b0jdxQWU*B5)?78I>8 zltL`nP?})*{`EAaN^Zn(%RZ=H$~o>ir2t;9dTo-Lg0RAcV$za~!s^2C+{FUJq91v- zroT*p`g1=`40KIT4C(bFjazn+_Xh2z9GdJ+Z=dc?@9eLwZ;+sqV8r3lVeg=A!-0{Q zVb2k?(%WRiWYUFTg&4+uGBxMq+_df#&*s4fVy@);MGyy>G`iO~#=1?~lL-8Yoy)Do zC#6G`_u{YRF-;6rmtndo-9@0$eWm)<@mb7~H^5m`v}wcsktLbTNxAeh4P?4uI$Mor zjd6{ub-sqlCdZak7Z60oSUp#GzPwA(6JTH4D0#BmhH5{;0mqK+mHpKGko0WknCH+@ znQfgOphw5gidc19Yevw{T2iZ2K24}q5S+q*zn-`JZ9m;?89Q1dW~Hn3yPN9hcj#~4 zbc$RsiEN&S`VN~EAj#WxS)XvNbz(_b}h>+u{} z9Nw#O_iv60ZjWHw;b?Z zQJn2vm97pK)Y+Xlx^0EorJGxuHd_Tg1uu6FB-Std3Gj5Nf9HR5>}q+L&(6V>#Gxa~ z#y%ht_{8K+zms!5JlePmemOW@d}-ROvHSrPka4LY9RB2NacZUfxewav0RhsX22#lm z+A0V&FI5Yn%nxE>1foF=I_QBT$mR@MYH^qI{^cdvQK=7y5-HA)RaS&+00>&QjYjRG*1v}KaM@7JsvZnsZ+iruMuoLjIQtTjto7bD$Oz*;_-2YhY|xZpY1Ds1?eMZxc~3dW)QyvWzrXGB&Xp`4}cXsKuz< z=wKiGmg<%p7A}G^={BiJWkV%+0l1*aw!o&@2y6^?+Hh(DIskRx58)f4^kp=PNli2l zK{0LB*etm-5!b;yaYM;Q@TNo=n5$tf*$6SR**9Uk(ca+S3cxf2)P!Y(uYxPYNJX6o zkB8KTI>>D#ho##j&qgJG)sLa<`@c2!hwQ2s$sS~V#a7i~_i@HRu$)w=lDWXldh{TB zk%IgPDH2zfNS8T})nU!zOs(ZI<~EzOL^FLI*6kzteCmU-En&tYFsR6E^(>;SQ4fyI zy&~`(^2;VZ+dh~HvKtO7rm9HXGOQjt$$Cjp0GQcBrf$Tey2>5A>3S>=0pZta!O{g9 zLLF@niZGrq()H9CFsY2GC^tk^{c-K!R3$u8^ZY-v4esjHuA28ljbl4_F>~S`Bp=p* zBm6zgGu&Lfot$G#3=iVg{bpltS&LCaPzA9Ta0b%wD*0Lt+9+>xa|bH02k;FDPmt)f%-b)q1H)>DrE$v)?e{ zl67U`VGRp4;GLdH<>QDufImLcy-YVY;&2A#ruF_G>j@x105$R5Qmwl&T z+jA&~a+{8dtd)9!9`JRSzMNv1_(9c6GGCWPf<|slWLQ{DT24+^)L%VbIb1niLhLv! zsyrkky}d)c(j-Q$;GuM?nXsh0PAF=JzF@Urf`a3^?J%0VBRKWon`KgT)rGZZRN&do z6dIpg*_5TI=W@xV17Wf*-DY}sp-&lTY483|D@hM*XE%K^UlqefwFybUQQ7aHO40bj zlF@2v;-;rg@wHGm>eL`s$Qn_jIun7>`|*NFUzKC`=v@y>=DMW9%DVnKR2}Dz;bNCh zmmz}0jxAi+D|2@G7Nd<++f1LdH;qQ`#=8YH|4Vgww3orxt#3Unxu3T`kNYZC6z}cN z&+1xK6Ti<_UqzcFACeuBV`8L4tMPqE{pk2S80So{divu=mg2)$R;4O{0%<{g@R{-xwFIv^(6HRk?J9zaSoC96uQiK8ll=DL_%(Q z8x2=$Z&r}FM6|zV!{vMrAo)(bN)k=}jkqvjwzokm{0&2liJaY-Hkp?l!I@DO>;h%& zTRX#x6C|%V$?&&g`$LZu+Dd(^hjXp#%YiYmsp##G(Yt8ZEZeNlir$p%Y$mlJwIm4{ zwGF|3&D%niW~ac3u=8TR$be=8Kc#Mmnz82cu#CtT)o2p>faZ9)j7vZMCjTz|^w~8< z=S12O%!!4GJNo7-{K|D}hzke&nGr+$9v+CkIyl$gj`DX#H|3Aa4?4H@KGZ(crP7vxQarQ%TZC`17Lkj|_+=N&Skfzx2o76PA?~6wuvt8q%7L z@+yl+o95axDohU440RTCf?sT-TQbAw(W|PgM~J+9o$9iR3K}ENzUv}gn%iC3^;|ck z9qD{2O~nn|5g8ijs!5SRF@)a(t0CX|)s>tX2S5iHWK*PnJlLFizsihSy+OTlkH)6O z)*Mw}l43TcTuaxaI0|rA)>g|@VZIwbreEG|ueCW(-d`}fcDLIy*>pZ(_E0x*H#k3c z96m;0L=dS7C<@@YYP*cOu0L!%jy`50;v?=69a4YwZuJBS%Y~Say+TCfcmnM;0jqUA z*#21p-2PbuFUPTMOHA<5)1!`$Yxr}j>(?`~bFDjo-|OS`Uhk`n$GY6eUDBTxJB*#A zrXvUl9NNErpdc9lY!DD)knf^GDsG_XSuj7*#g;}szf(|hw+(nRhT_wd5{HJJ1(cS$ z)do~5f*T2tb)4IvtE;Fm(a^R=_?c;dV?sCyY0g4u_8uT32{I_|!%MUZUm6N`KYA2X ze9LMxMP<2$9BlpR&@O)IUw(>$Dt~rw} zF=zMR-=MGu4W3!2Ziv9eykN0WM~{H|-)F1C`)63JEK+@$k}r@=k=A7{Npw>AZ|%6r z_8u80vyY~A>_Y-l#WMxOGX#vg_<0KdN8m-NUehnpS||3a($*6?s9&bw3MSDC#uND# zJ@zGy|3~W@VAd6qQjShRZkb#0i19H0&?~YwI3G)|la533 zmTE?EJ`X~h1@kr^(*^)XYigfo>6#4b=#ec)wXM46ggddqVHfTninDu0wlh)SPUuKDnFs2NjZv`_I?dMQ6BBc1zth`M4Z*H}2yoOH z9P&1Hn$?bQqPtAa-cxlYxkg@j2bv}m*bm33J>TQ|xy5F+a-9+u7KT}=@V^eSR}XAx zXb7sIzJ4kG$NO^6$GzvAYYGR)@d~xbl%mEc{Bc56{S|z z*g!XPz>=3u+C|4z?641d^KL>#;Cq;oL-Fq*jL3ucpQs20`L4Dhc}MTBWD$i1Cuxk&f-RJYM7^MI-5RE_4a6ybom0BCzhhw8>u)8-BZq*Z;KaJ+J4`;k_^Lw1NE6!}PRfF}BYHt=}3(KuQP{2b`d`V_1R(pZqM zj)nY=pxkxUXVJNUG=tJ-Hp^6st zoZGoQ0eUWg6JAkm5g@q14a|d468(>RkN`KsF?Jnui{s#E=liYE!ZN3VQxLUxuEH-p zxM-D}GVl@G(^D|UWmrX1`FO9N9BO>Yu?`RDNKLt(Sg(`KyczHK6dW(rI!;p|vi5PL zJ%w)zR4Y%}nHZt9-%eayNz{{cKUAJPFk5;R*WDYtus_x?{Ya@nt~aAdz*`nhthSdt zp2wTz+zgDHVM4cl!Kz=b8Jx{3u@AZ3pSRLAtLe6Jw)u7~K=<@PuwbDDH>tHWlFJdu zoO?lxp0sbc*d2Rgyo;Me$Q>AEyEUt}`e3y_QY04|jg|MWVAm^|ONSPz3kc0QIaFKfxcl%9ul!zR1fE>L5L{4y8z*YcJe$WQ=$^Rt8DTP?!DVerLZ1o$j)h}e z1vk^_O`VU6PO)0griU)#`Z(34FOuL-yh6S5420>$H;{Kg_K-M z1;SwQ9t%)b(i0*(i!;2ZpJ(^jcZ2s@om?oT5_;=S?3?0?}#IF-y=n`L-aRO~hha%l01sd6Uj$KEBC z`x}=Q@Sw)Ac7a^yC&ZH>8MGr0vPFDWhO=baIHEH}(xO2y zs|eD4#ulFs{FJz5PsOT|r8*HDzxPh)X>OQ?bVN0t^@EJOi`bd>cNw9jNi{XB8^hU2 zY#mV;6w>SSV!0RFPD<{fBjLpcrozL*i>BAbbO&$ZM3|1SETyR$2INUdnc5BWMwP*P`u{{=>?U8DNl0^gz)ipc1(FKt%D+^P^XQ~aPG z?kHaG)T@)e0MCG`Ckz=^-CdiZAUKHulSRcMg~s;KzD=o|5zKGfruaOgO%iX8&@ zDlsi^w97{?hJ=U}{wlB<8!E-Hz0dvOQpxqV%PS=TcPk@Y|7xXDcQdU2uo`nSn6~Et zNX>$6AVNNxzACjyx>XJ2sx}hOxhr)t<^Q4tsU23q+h0j%ausW)i61abj%AL6P*F&9 z-(@tJHF;!29O;Wbjv|7E7k%RB^_%Ld&-+zpGf$SM1xA)(Gxh5jdPHr#n+J(BPK0H;eVqtbOg8_1eHJ1u>R(o#i|S7b;I($IL!>y3UN3 zwm$`$Ykkkv#_@SF;>dnlXQ|k>c-sOB=pVBK`Iy^oZ#9VPusd4lhMyX_GtP&1rg!8E zUi>Mp?TjvdxcNwUc0P}Qt|bg7e6_sUzf#k`?qJjxtT4McP*}4~bB4S;-&}NiZ*qFO z!ji@C$+|@yjy*4;ui@+VA=F)81pit+)<1Z}GGj48*U4KMNM3MpC3b;@^6btf`##el zT>g5pMK3;bls#1HGuc>pPLyJ}izcx9NK~?uF^F3Exjz5Ye9?96VS%HoJ-B6M9n5^f z_;ba1V@tTwH*zlXcVvvjrWg-N`u&ybEJ-`^7QHVX+SZ%sy!&376W_OUo-@=bD=RG) zIQi-4*pv{w`RgkzC@l@ZJ1CrPj=$K_)CbRnjtuTf#O=XeLHOQ{Y|Bj=m)~Ba?L*B- zCG&J&ImBaem;VT)%M!eG(px|ap)VT32)xM27~8}%5k{*Amx-*L5L7!T)xRwjOx!OT zwpk)+c1S!k!ZBmE%nLBA-!<*7$`g8T?!jH+zR$<8txcDsf>Aa_wG|KGor<~RTI0&% zlrzjxJ7Z!zV%T}oWP@iWY3HDak0>UpHOu~;kCilIg?C)wWri)krC2hJjGju$vnAs` zZpUyJB|Shz&4OhgeMZ`8Ly(4QuA>P5jUDy7$ABbJ%Y=+=9bI0Frucl3yc_uLt>04s zE7w(i)pPu_*$Nk^^X@J(3SkKJ9EQ+1^FUd&mwe~G0k~9|7mW2#yh#!};=l>qGsF4` zAfoWEEF6GVOE;Ih1&?b>BfesQ>x=vIFhTV=1-{bLk|{g$NdTzFtHL_NkTTEJdXEvc z#e-dALMPO}!^r&7cBByZM4{VJ@}U&JDawcQuCG=M{Za8j#KA_!Y;-0@J@fVeiRjm2|C@fo1!Y!=4Fq?$>vnm6vhE z^A+!G^aOtk3%?iwT#{mX`U?C{qC&n$-i4e;92?uGuf=>f6k2jG$lj+xq%CaV2hUr3 zi9NF}S7dbBEGV9sU4CWe1B#S;%J62GA-9f6%~8#-6eNZ_O=gl66h7J<7-(BGeG?d# z_Q~#8*|^&^`DJ&GcCBHw~P>+|FXiEw?0;9)tii z()ACN;N&IEdn5S@^i$$jzYU9b+h=PG7O&3~8eh@i2_C@__a`Zat;4mbB7B|+ZHv8Q zKhR7KM)%0wOb2srF5A1^j3x1oc(s-Ou7`SmfO)A$S)+W68sucXP#anbUadeYyK_&R zoYR)4XNUByb&%gnj}n5DC0Om<#lmQQNw}$`HG_xY?ahb{ktU_eQN-U!*hY%7;e=Wt z&mBRrshdy~#KH5hY|5y(9=o$37er{EM#V-6RUKmwN(>PvM75Y@_(#GZNT^Vq(Mf=I zg|p-UG3RgdQ8UtMi*b7TCC8P>L#@&OPDv!dI&l-Kh{ly9i^yQT#bbmeXCaK{-O_t4 zY3ra$ZZC!LS8cGy-Bkx9D?fJROGO%Vjdcizr16e+PpSm=`r}-d^qM3ycTU@xH#oKNi3j z0UP{g9qW!h+xLWZnR(=VP<{xsA?aBOgk<7!))j7j(loz2gNz-MYXl#;?CiC4gI&6z z$c{I}N0YHpVo3LFhAVPzMk#!Bk+ht3beS!GS~wkJhjaqK%ENsk#>%Xde7CYij=g0q z8|fK^Z9v~`%*xp6zB4Wxhzr<$1{gi=J==4VaPSg^FY||yqjCOR0Z!YQDbTVZ(3f!Y zj@``lTu~`ikbvtS|UVOAuZ$3H`tc`A}BPtp>yk?c!ZU16tF3g$~qNKcgd`cVw zFQi3NHrX4D#$cll^G+5z%Zh2`g>pMrYi5U|-Vi)`6Rn_@6sc7V{RdxRaFK$Q;kqWm z{8vq2j?9z4X4e@-q|9#QuysT+NV)UkrL$f*q&5DPC2doKvVSQt8K673t+V;abi0j? zrCx)zcIyv??EHnC!Ca72cI!~@w#F{ZN?5#hK!V(vP{?CyZTX2 zOZg?nct5^EQlQ1)TGs(Lgz2);pjIZaRW<_Xh-gGObzp`OTPka1!{Oov0Q6k1vb1cKL zu~Fe=Flq@hL3cR@o?puJEBqnT42{=zV$Uw&IIL7mo{m`%#~JqGDW}`xXwLQVc$vl< z?95%>5tIEB!WtfL$NS~ix2-(S>y4)!m3(qS-)9{7lVNFg`pT8|F3Dlbj}zO{IbLL! z+e(wtywWf=qlFSLZeYWJ`*Mjww#dB1ejwwU}7!67KIH`-T7~Eda?nb@twO&f9lhMjC1254BFRcZCD4@20 z!zDksi!~U{5&2x_t~Egd57e*JFr~71-&%?%d+R_)qzMY#{*3BsVoi}0I#Q+zxCA43 zZhL)jO2%v(r#G5Qvz)lFP50a12_MVVy0j!`d>__!(dBN9svw%-2q(DteG(l;gCtQ^ zE6K7+iY!lb6$ATqFHReKa$ob3XI?2o=|yphX1MA5a@#@~Mv}l^H98}VhOU!w+p&7; zySspI9*!-e7f@hhkpofUgB>O?XOwavGMa&7uoabc!btME9W@tP;9^Z4CZ%XAW9r>~ zEp3Pg&i&vEcgo$08FM-vx~b$0y{+#&9uRdjh_<7bLf^6nUSww=B2k?;hEgdViX`;DHC96I@`XIVtFrN#pGpJP3AK7%6I1O-lUJBv{r^z^rYE;_d}oL1y@Nc!+q_zs^3u) zrki1T3#Lz`ij8vxURY=<=V+d@847^E{3;56>*nHG0PowlCex~o#!Q)p?Mge0Nl4UP z#a6p>>_}PQM}ZR=CcU$_64u|zTZjXEKAuyaNq{&aJzAo^*_?rSdlM-BwMY-j&sq$7?+YQ%uD3WI3Bmr$MH|je_{nlKr zR7B2e%lRE^@oamTdDdR~Xy2vH@{gg~gZe`evqh?YnKeou!#k4TMDG3-JweG7ir<4) z81v}p=@%@1@xFX@0gU!1nDQ67A!)TL1V91AUb#HFrjAC{7J((U^yo`-*S2PCA;eW4DAW6*$&*B}sp3fM1O31f9 zmQ6DT-cm_i%qOkB?<@<;Z{;l^x4Z zU9;VEcz<$0(v$B6q>!<=Y&O68DUu~&E=~)!E|Bf-Y;@k`YzU|1EHpnkTz0`p)rdnV za~At&9{$?lH%@Do?xj+S1Y>PJOy@&ZM(#OK&g!Wfv-(BVagc&@Q7a>t-kNUklCjLS zinqY~4xG)Z57HP6b&OtmpS~mDQH&Z_*ORuWE6mq>6XEgRIMwU7-qHNXz5X}il(Rh>gjVf#S*@dG&aaN^oMDBl^=ohEcmhaR z-&sxhq=y+*pK* z0x6*z^AN|&+crsatf1Pck%o?D6)%b zJ;nJWk*rKNc`eMI&wJ3UH&I%?L0*q!;uDPvOTHUFB+ryHvkhql=kY=fnZ)%iPR*pw zBYXG-5E=P-;h3F1Bcr1o&=%9ps#wc$#ETGz({K`*91v$-U48po`z)C(cL%7lyOF!N zYx2BPaPNH?0~+4hKDqh$^(bw*F>M9Z!b-3R2K7Fl2~V^5!T^|$d+$9nXD@osXdk~V zNPOmblrsHA)(z<1=fAqGYP~UDz2m6|AMEi>zL~Sy0Y^-FlMixtbd;G|yeP!ySw_Xm z$Mim7q}M11R9pxd1>Or2@<$5hnQ~>hq#RB-cT1M9cP*RA3a0=O`?W0SarTzX+jNi` zZhPz3Hxqmt-*&!x85vJ_YtiN}R>AiJQ(*BGEKDoe$M|L&D;^MZC?A4M}R z-18%?(^Q}1pqjfNzK#j*)jF&x)R6Mzj90u(-5%GggFhG8V=z;a44_I?M`g_(P1P!A zDe{j;>yz)X(*lYg@6D|RKA!eelP(wP{LzSrV$+m0!#29G?zNiolap>5EfP{>6HWsR zJiH%*@d4l5po4*(;zEHhzeYz%I^@_}>Me>`15!E`cs?Ocn`0y{_PInyLJ9y;{rR0r z0D<^O)}DP*#vRNgvSy&hk-L$;#O0A$9D3lI^X{*uLYF!IU$k`ns|{_y_ZBeiM5Z`G zSJ$nnF?y`vgflBRQkGy(=^LaT zvc6`&#ls4)1aEp0-taweY{}@M81qf1rYw1cNzrDwxFI39hr%jVBeS2`zZR>JeOq>h zFF8Tzt-H_2vvG=Vno=O+unIbkgaD$e(|d5Vf}7w%MV`#=*3R8gMOjF?BU~t7G(J-- zSgr-F{Y29MI|$~=A_(yKu1Lj|8D6PvU5#{ukdf=sI7&m?Tbz11;_G_{dbqKU+s6HD z1V8+h?1)TGCl^a^HudzB(=woRw}Hzcg0QiH8x0kYP1L{)#vx*oNo*L~hTZ z%EL@86FA@UZM8m%1!H&rhE;SXs9iRLI3q>tP&r+)yoB$Q&HFJrN4G*-zG@BOq~Mg~ zSKVp2@i$6Iq)(O5;XLyO9x8rEcun`tBbw9}cGbUt3K^ypV6 zJO>&pAh+y+{uZ_xi&Xv8hQ_TOV19)7%HJnJ^4KXRH`n_F9(%8y}e z16WG59a5>LgB=oJCBvlT>~uu9F0juwwei=zY6uA*AltAZWx0e4HZ=Z2f#p+bvM`As zYJhfevIv+ZE0O+%hIS|?R1$HE@onUI@>Dq1K&n=53r?ClkEt+Cm*z{d=xRTHOJn z8h<+Nk4xmzQ6VEEBj(^xgL6!un^W39IN0eAhSSnGV8Fw_{m(3bb5ZQPN_R%}yp8~w z&fmc#3S2nO_ZDk^xJ7UP`@5oj(C|p{ zO}>n05e(pR#bz-N3uo;)xeW7Nj%iA1etKB;u41^L&br1ll!o9AytL93L~;JmrZ?T6 zxCD$@dLC~G{SikfK_q@mZ{C^5suTKep05|w-(eq6v@8+vcN+c&`DudWnL+i`Ut^?? zFYqwb#c@hb?i|{s_G-5n;vfM9F;wZBN41ohke7i-{MQ|c`Tsk8uuTHmtg1cPS%=&8 ztze;E#; z*ogbkKM7%C@bW;AbqcG<+P$OgsOE?WN1o7C>huWOf|z*#jtk(hNg3g;oftzQ+DTo_ zIpD6WmgbDAdXB3{;9~Fg?=2_r`HsI9c}zW5uG?%wRqSI zm-eXB-}pzYx+X?nMQiz^q3RhD+w)IL+uT>im%lOm*ERhCvsECrHL7ui9mJ&-y6MT( zzAn2K`$UDX97_cxwVv@_YeHG=Eq5$)Wvcs1xAuf@X~jb{=f~8KAs4LfabxE;jW^`c zs|;UJ{CDDsPJ9AJ-(qO@V?-7gbw`>a|L;&pDhw!l zd|``ztEG5{*wFp6ibkG-{Q+&;w2x}%peTC?UYTtvbLCvJHqmluGJmR%{iU1~k$*bQ z7v$+J<7hf@dwT-5sAkN_Iz~dA=^IHEa*$VCdghi3HcVKk#$s_rLGF%jbp5kk&e~lW zR~esO6VWohj~7J*W547=Lza;n1^&(;BG4p*bc*I?*Ek|do6-LsIAc|8 zoJ=A5EH#`vh3))XPRGU~bk!(e6g`j&^=Ku5=F#}IlTBv8YSOR4_>NZr=?f8|;k>~n z)TE#1c0A>^ohi|zXf%CT6?g#4eRnI;@zF>X^Z0o>f*T*GAJ%AA90+QqE#CKhUK1V&P$_GW}kBml6Yk3 z`p3Sz?i>oxIo9o8v88m`VF~vSpb!uSgz9Qukk$-Hbt3avQdV$94=t$KNN~~XzYXj! z*TogC(E-!~z4adGv;FGMsPuo+ZMZn9pYH9_n7iti8M~CWs`MNKxeoc99E*4&ALs`r zNjME}_&t1LUmTX<#%urJL9KbG)qMgVpF*Ufzs=B>P;ct_OZ#bx(}zB@X3`i6Ag6h% zgeM%w-Vk!+OIgmT;%WB}zVJ1B)|8756?yq~!=l_;TW+B=y=cFQ%*e;_3qZUOaC;1}?1Iz_42V zD({XIjjT;ol)ep`Bd}XuV9Q-dW_5wNvI&H8LKb0{H(g14on;>fw5_Zb!CiXfa+01k zRu3CTN6$3>)~w9r!$14*61cP)%wpQ>fxG;=RKQ#zhQ4&A>5oBcR*BMhle(WL-&3}J?nepVsRCN^}V@taTT+* zthuGo58Ac0*bQJnK~S3bEshaQSw-nN$*y@1kMdhed9CaWF zCR-1;xBa(b8;>72=;b`A4UWyjW``{gqOiWYg`=Sp&CSzmn;)!gNaa0W$Ce3|s>Z4H z*a9AB<8E!uO>{I48znNE^5BFQO}gsX3v@`1^H=;2a9Tx%3ZrjKa^&+mUC(P zE=G*4oXV49;xhS#23)tBrGe zngL3xHp~pFHR!evsw+6JN|qsM&{tekftHziO0;qR(a>w6fZV z?~|!dvy-dSNR9zLBn6`XHLJC;{&h@FKS#abB%}X;WEEm}&9^3np7M412Vk z6E7a|V=#+k=I@#M*a0|_ZF!Mudr1g^7g5NDtcaHylKCiMB$*TRo@d?ZuRFM%4?ita zJ)-aJ_=sO5=!6d=o0v<7h}S~&MV5MILWycBOpclv37aLRw+2WPWdBZj|4L8PNkJtz zV8;RfkGZ#uigR1~2l3#Z;1US#?v?}z8fe_z-Q5YnCAbG^+}#O;#v!=7ySwys&bjx# zIq#h{|21D`&6i%?kJR2(zpC0&wX6B$CyAUvO@-ST+ml-_jNhktbje&*-|i~jC!8{} z3|-&rY)?)sF}ZRA4>uLdPk&5|Us3ec5wY$>CGy(evEKOHQtga^+1Koxrw)W#39>6* zuuIh{XBrY2)HXsV#lIf@iqUGRXJ-yqf6CtU@1R`oLfy21rROdMaZG8U}QGI&mV6Af#c=JA<86XkV zDX|vaE?vl#hR<#x+_Bh*p`|w3mywv%_<5nWXvsunWxhjYpZVHshoa(M)ce{7L8S`D z=P>36MiNW6TE#EPuvXtH&1qFLpLId>>!!6alb`>XzRqEtO`$7tM>XCzv#ZQh7%EV# zjCOhCPNoZ%tPk$iAp7g?s1};8Hl+Z=r)CON)WvSjX_o|OP-G4TzdTZ-{#ZhqIgl{c z-|Mk0y`c|MJsoXsvcqKJnrgnX8~g6me&cR)s+4hHPd0Hvlv5y|Dn#_y7hTWs?syTs zjwB=eEzXQVcMfxkzjFoyIO1k2U*4xHFm62>odD+n!wWZs4f=zraPUlGO{_zs2`|5F zEoYvLCBls0WZwd{+Y#M!xvcTeNYTMMTy3jqHVPveP%Hu^ims#O{IunO$=X$)&Lt~5 z&sL7ZD$*W%K2A-CHw*$`+H7WT&(Q@flu8bI#Xb_#a-sgf6# zPCHAN{RNenDY=`NYASk{uCqi=SfjfW;;nQ@pOQ{dni$0Pm3O@9>IEL+>%3Ms*!Ebx znN^LGG(~8-@PyRaijbWIs>LK-NB+(LrAt0*XKPxOL;#5Na5j{rx3mOJ_mC^jLEnQWe^wk;tqWIN zBDzuG;$DebRE~KebaudfGdX$5^7aB-bE3}#W+$24 zWlK?O2W`m8nVQK@y#JX2{?3l^XCMll%pf!%wQ!3srbpwgn3$vU;ou!nX%Vgrwqgy) z1@tMJInyUa6Bx2qb&sD16vk?LtGsR>sYUouj3tNj!ez)KMfsm4NWf5(e~nQFfqBLW zi zs69SWvBXS0T9*|UBv>}*YpNDc%(*ov#*eIR3Nj~ut~tk*>I0>Y6PSRS1}nFYN~@%C z{&y-a^xMywa96Hj9FIR~c|gtW(Z<5Jc_qo8AC_2E>|dVl>1qEfLHYe!I5p-TRl{zAX)s@4C$S$MuDM@0MzjRz<2DUBBHKcfAYp#Hx( zL@;$XhS;DZeigXx&p%Kfz6`*V*3{gG6MbTHZ0k z!N`%Dqw#VtNlQz|W@biR?v7EiuqZ@CK;s2|{fhV#1frm$LkbHE)69rMcavuu85kIE zLI$9)anIlab_mGGSY($;WNjxxiit#p-=P4=a+>KVWS5~X-fE;gK#j;@85|(QVhp^n zUVrDOqkwCp#!NsUCbAG07w7eT;zcLs^@oh%d2XjGY2zDQ0Yha_3ZgqZJBGI>I&;-V zp&+1Qp2XMaXjeX~{FE#~4{XV3;vZbI+CiliEy(qj(=Ee@_cNJKPu@oh^(d=8wI86Hwh@H%nbeXzR%m@>+S@oVl6Wh(jZ<|9ErUblmXcYu-GtCcf zW`f}%4=K}SQP(y`F&U^(H2-iVJ7h7>T)V$e&wx%Q92p!8XHc?Os`Ue@4JD4sA z>BxaaHl%pl8Rf`#m2@Y_U*OZ^g*i>UdWXvn%3r=eyLU?a|dKvU1vEhovz|!(v>OXrK%NPqKjyx zh%1%V0EAcYk5YR-Xv#)Z{q&iG%ncHUjMDX;frz_VAf!0COR%3=R>*(L8h5(Ho2}p7mu+kqqDl0MJBL7TiWG<*Y|JQ^ z3#Xq;aN~_-R2vLMro84TO%bo9>2c&q8CeHFR1!MfVgMIaz#2F~+YY-1E3%qVjk~I2dX2 zJyhP4_6KLEPzF?<=&(t|*a8C$DU0cKBObA*5yH4;=99myO5I8D8rM=g?vziyWViRBz3at4VWqB#4N ze#mAmLLXEL6@d#}@ZZFdJuNv3W*7xM@Lg7Sc!{8vyz+!K5HG*S-KxA-aW&yRpO?Ht zb=zF=lsp@Y;aP8(iZh-)?g3x>A_}eQMZ_I%GT@bpVN>dLrke@}jqS+wp;**br6;%$ zW(2Or5QM&ZsGscEI%#~NSI!Y>cv|03(2!gnTIocv6XYS7RAW=rw;#lf%)X=bodlQ)o@x1rlEbGVQ268C zg?2GFumU}ke(M+sR!#1bim6IAqRP~jf5sGgdTHvaus`c^hcxY+C zfuJr65}=Zx_lmx8n^E72a9EVNROTHrS*`-LT>Eq<)TQQwJ2#wGPrV2L!(=D{=5p z=da-U5_dks;zOFmm>TNKM}Y5Uh7qY{%qCm{T#>1)FGeT0+YGSt|LN<@ar$l~xUGdKri~TTiuy%WMi0EG z{PW3)AECjZ^aR=7phRJdx!AK)&~vAhZ1Sk#I~T20GWnre0C4!FXkTM zzbGrALEFP!UQU3|LS9K@4jh@AEemBlICRu-q`(;t~V~N@i88gfnS?B1c z`OY=LXW5t%!YCLnN-D_{ys%f%h6vVRk1Y?;@cSn!ZzgOFca`3re zdm8MRJ(lm+edOJwGt_;BMmQzb9kf5^0NiLWW36)OtJ@)S6Tf5h;j~rA3=5heakC$h zUGjZ2FXOAj*mt|`reDx1Za?XrSk@hbpCfsdC9%ZjQqaeDYR%{qKDsR~Kp(z)+y!uE zcIpgA_x&=CAsiweQFJ=vu=e9>EY?hTFE*g(JTTh3kkP{QL5bfBXquo-1Q@5sxQp~f zt~I;7w39MH2zWh7Z9Gz#TO1XDUd+?!ji z@^hw1Zj5q`#6v1wt69YrG93sJ3?O0E@ncYyYg$HBUK=jg^$$Ar7H43C-3h6_pqWlg zt!tw8##bKM%&oVbfQBlqE!C?X#8%SPf^Ws)aLg8NOj z!(xNInGT{aa`*V1RADA!k=w$?yoSGaT2694@zouz5Xo(nZg5d+I$5q{7r8qFRpm(M zi1V`3!d_c(8-ah|6!FlaMbKbW3tq;x6R4pPhi1^pRQb%hmSyo^0wmG8MEoK@q*Ir& zT1~w#l8MeE!ZUmT5!YGDU%Jk(uC0_J7Fu4DqR+48LltsXhp5$F}7haHp-<{N_6i}exsI-vtSp5#8yNZq#>OR4-Q z9IBIOVK${~=f9M%Y=p)fq4AEat$sQ5ahN}L=!V*H+ks3E8+@NVy=$|R#U;LjpM$F7 zlDg2dn@K%rX7ulV4e-vI@!DFB2cxz++o%EaMZTOwxzy5FzM92dWjg)HY2l7o3o_B~ zyym~(15u@j?>c@1T`igZ_~cz>`34lV7`|Gr8?jvr8lRXnP;U|dvcsBf_S)7uCCOR6 z5#SQgWn0~b&c-l(%Y>#b$AhglD)r;a0rqUz%(-WY;#x^jy)@I_sYNAv!G_l2b#lq||dKz;ELijT6S`()M;j$_ps6SM)ui{&RMG%C|(l0J$#i%W3^6=xhexLOTAau_OopSf$i8@JY%rVjbBkOt<>e==~Z-%B&-7&f~hiSn! zU7DiVPGLTSBT=o6s{=qrc4#S@=uJlq#v55szeY)DCacLkg=|v+l}-=$k3lMi@d|L1 z6g%GA5}j8}IIEb)LXpU_WT9LFSrXD}`XgGnWR1i^{l1Ht=RDT$j7*Oi@)%{b7vy>) z6+}cWLHv>X9(r6%a!Sv|q^lWLtrr(X-LTo0;{CW~8Qx?EN=3_a$!w>ssF9v7TnHi( zcz#FH(pbwyuc)8B@V=O)a@w|vpgT5j?KN#qs}U6U)TIKV8n4IJuF%xWa9qs(oeQwU zjHSpFs{a`1u*VJAY|fGn^8xDXX^PmmwoJ><8dxV=Zye7N9-_X$xUxbb(3@#=p_ z5yaNB^+P{yNoU-39K=4>W*)5Lv|YKmwI}PGE-*upC6L53TFv}97mA7+o)Lvt_wg6} zP|1-mxwBWd*?ot_UaD+;y*Jv>t(pEFO14qI5m82TkdN0(5W7ORV@q{U??QVOq8aio z1=zcHX*FJ_mbHjZ2iw^$@)O}D?A~SO<>hMosEWJomX3P8C8eniZ{)g;)eD7(u%wzC z=~sj{ew|%vrc?~w`?kei-iNAfQWR6`{`^(i3F8$Tw^7nzXW`L<66CC$SGz5jt1*>q zrb#c})Jv%~DAGsw6_V7(@RdErO4&7?TtwhPDf zL2gXF(ko7rw84&CpN`4dt}){MtgkV427|=6A2@7Q8~QDjt0?6}vtpS$7V5Rhy5A(3 z=jLbfH=}nCCigc^AQ>aBiyPI>lHCWI=pKPtmUT@8`$lyr*h~_;UmDcYZLOz_caiJ> zlfF`gPJG9!0@k~Zp3(}7?3P&?w#l-1&S??vmxXcH9(5!Tm_aDa2MJUV@3fnxKsF_# zM8f)gUd4Jrl45Y5*FDM9XaDIGK-K_%Ludc&3;GvNSyFgn6EhvT`I!v*DUwSoLXUY+qvF>iO zZg`lp>xX)gRxU z^yFDH;dG5h&mi6Q9)~4pp~^sDG&y8E^PKH!BHp5(95ye9_tm0ES}33Lm!bJ)cA2BQ zG0D&RXp052Ia1`w`B^JT(WMKkrdl;d;o;(wu0nA)g#=SZ5pQe!dO7puU#Z&eHdc>| zpUlfSyG4=csZaH0TF`Y(HK*`|4#;xMf+*u3f$)PR;Ozx}& zFX#-qDR#7^lmK}zgw{tI>k&jgm>yh-&p3HdAS{lI#ui&P6V8-;9t)d4sAabo(*5Or z99WQ>>DSFe*<`oUhsiXVI|4-QJXpTaGh75N6792ovo5OKMR zlbKoNxN5*y*w<0Ga*xk#rp2pA2pqkwW-Ab%l#r4yi`d#Swvkc3#ooI~E_F~&?Ue9& z+Ocq*X9mqno3!C-BLgAGl0N(5_i-96fx5?=FoTk2C##?9U)F>Jbc`p@&kr#!McM0J z#2^(u{2?_#E)ju9F0`wXli5F;XtKI+T5L9c^7ZEnBz_Vi?JhfiW(B8){;Ir%66Cfi z1o8pjV63zuc3BSga(3GU`THq#^m&x z&WMJ+&*)_f&DKCG$oJRzR}lKGx|}sk4Lp5Yi^*F7+;AY8nf>hOvQq2 zKBUK$1Mb$`a+|fay4qwbPX4-k23XTSJG0JqTzQT;rd*jtSdD0XkjCmKna5C3wWIKu zHCif4Gy#bYmP-W{_trmgSeSYVJS7g-JT-+sy#d2^wqlWJM+VtE3X2|smCkwi!Iu~E zYqhDHY#uYSMTy3>^7Pl~sjd9r<-@Y5pZOn`F8a{wDtQdoc*%5o^@>$gSo*)OI+=}5 z^IATKRMJ}V>SDCwn=v56EA)SJTAn@!SjcjmT?E6C&EDV@xK7#z zp1XTBv)u-VZ8bY0R=K<#B?;)~b`RH$K2I3(j@x6q;416fhy zBAJ;uZ!#KugX%sJ*`E?l%&ek^9_I3BaKE78Zr#O;s@_ZeW!gph$Hg&=C0Q)jDjO-J zIBouEicb#J4FM1Q=7TJ-wGl&Kbcfnm;pmGbwQG0DJ`?N4Y+HWs26ih@f3huakINFO zeeWm5;fEppofWk>$?bOUCtB1rS9}@5mynKf$uX62Bk?yp_?O&m0gvVqdFCQydQTh@ zm&wo6`X&$1OMEqzrfbzl0auB4Lreo-4_>%IOnVUmm6oH1BT?y%&^q@Ezny!^<|v%* zUV0pN%>;*iT?3jG$LbF-DL&}1@$6PnXFuA7o3fwKS~(Y!YUWVaGpt{Ml?_}7Q(u|9)apWhcF7#b6_uKwgyqYI zY$%ydm9uT#-eFm^eQ?79^ZQ2cDa}%VaMIN>=dbz(`Dxc&yl=7v)y!DOkddF$EqIy( z-H<#JT-Pt=1W2-*%_10`v}NTtJ+ZWQDgRbVp6RVfy7+oBS)se+`{r3Amk-+{Vb7S@j- zAg>u5Wb^)Pzc4#juhZ9Db}TU@gw4>aPgWsIFs!oUA$;Y9d-R1!>_!6?lc75-udsgA z1>lSwf2f&_S7iab!r8@=w{Y<|Mjm-%GHE0dR(-8R1hOi5}YS_>~rJCd!Rh-#N7QwJgc3Rb0!a91DdfJ@f~RvF_sD z9v#x!n|geLJ7L|q!)r#>Oj(lifyK-KQ2Wb=RbOrY9r42bNlu4E&}X$>ORT8Z9#15^ zniS@|y*e;O$eAVG2gW4_SF>)y(S%$?F>14$Wz}_+=LaSSFWPRtPs%%+BlvyZH5j&_ z2Olg=2a+KCTMo|lKOyVnlIPKw>_P7~l1*7YJ)^Cv z0enFV(idKGB(Se7t&sUS)XW9V7fv@mb~WSP&UmD=qvZeO$WDLg%7`Kn`DOLhw7i$L zH91*X;hL-C4W73wn~izmPb2f3Y{ANNl6VBAYO*R>YRaKvjEUin! zTPGZvfex$JeNY^RswXM-EvzoykoaPs_EQ`(z;BO_nL(Ds>0FXt_WAp6QyHtva4%VL zrR;MtU=SJF4iPRBx{pT1-JRFa(6Gu6?5pkfeC>)in?Y)hXP&82uE4>K2s@%+`8!hL zq{=e%dh)arOxn2Q7!g%m%N}5=J$cO*>S(Ho&Pr);04Bu&zHo3_Vge;7Uiw0c!KhJ$ z!NqZ3!43uoA|LV)>{1DbWV8{LsRD91*K+gn6gz!=tQQ;5bXr}-y}bno2M0OxK8OI6 z64xwiY_qPBP*6VD+E$oaU+s;<4oAMCl#Je1R8%Zdt0bMN)Qf=x{c`0q`B~FPxFN-n zni)QUB2)J7FL${lbXuIpQ;-0wF)#)P0s>}KA;lc*9YZ0-r$-ryxWLi=J7zp!N3E0U zgcfl0>MNu}@Bx@=2pA-72jQ!6W9*xt!z*{AX5_7?zYf(r3M@B$;yxUx@*_gn) zMyEE$v#DahT!)W<@54ULl6?=_-gGG*HV)2lWJ37P;_F*pLu0_?wL>4XZrfKBJZAk# zpxj)I3Cco)O@!@o%XhIL1V{lW`-NLba=x*N$$BW6Z`Y5YR}P2ejkyZh!ctOF_L@7= z()vIm9^0RIdfov^Oj@~4yQ2$oa9PdHJHZfc-ZZnijPxZd8yui;&6)%kTM2jMBLnn` znwcqObuQ1TrXdVYQJPp%2Sk$y2um<6{vCo$+~*nlYc%v6)@!KrnCq<{&zQ3 zQXbxqxDXf|q{Xllcd%X;kkSD-AkM%{1gFq+C85%Ep)D<7Q)dLPPY@^h+qa;jBkQf* z-5@hTbzdq0Zd!NMBGq!ug~)d-EZeC(YG1x=6r|L!4ZCFp7l%Y<(Tz#fyrq$yR@_Wy zk@eZ!DM?^;5$|i{G&msQQ7Z^8X5jBAfG9~*GyOIOK+Thi$sH06QxiuZCWEoIKZ_U3 zqEZ^O3WGMguY(!uK3}F(SV<}p$xI=$8~)bJuIJ#4sg=!OTp?I>xl@b-jQ)i5|7>w0 z5Q|eAoI!=*TK3;et;})p#u|}8wyVezM_xdG7`L}WMfKqt{-}1x$w;xA@rY1+oAb#~<*8|Akk|Sux9?@C=|B+_+ z*AG<4*{Xju@YfHq_oApxi}sQA#jj?ZowoXim0lpqAwFyh7|9!r$bCgOnl42fZnbY^IE-g7cYl%%Xeaeo=&y&rPXCk z_+KM~8!ycV1_sQhOJ3*Z=9ZM%1fBlvK zL-++MO`H&5Dc^Q?_ohwQjpxMgK(VeQ*L84C1F}g}_Yn~;&40|uEQg2!a_RvVQZ=g+9QE%CGMaU^wGn$W6J>HVv*{JMD{^-{J!+S=+d`d~L*e2o zZ}k`CG*f6&e%NX2Q9oNpSh_bObSdrk|5jZqapGw)^;$Xy1d$G{-@fZLHYRLEi#rVz zl1lUYIOe;JB9?0E%|vMeMjWS=(IFK){9?%I)&Rm!{=Ou0pVK+_xgyQYh}D?IBXpun z5+^O|y`a2q1V0yl@8u*<^HwkZ{3#Cc-#VgA0dw(YPzI{wuAe_Y%8!7|?}?f8WDbkO zf(U%WzXi~$tE)?{wqGAg%a}CvZo@H|sXNCQ>teC|1enKa6Yv#OeZHbx@x5X$D-ax8 zK+njK=t8{w@xMi3roHe(Op|>U*L?Tpj&MvLl!6c%9SR zrETt7-Svq&Y@;pNJKSj3mOSv)HVDal(LQo@Jd z_lYyZO)j|*s9^UB#nqw^vnlfTL<-5ZqL~&YyG+NwFncBXaYZk%nI-Dy0%X`GI~@p3 zx*33x%|veN^yFgCYA18bCjFu|OY*%=w(Qwc;9_b`Hz732YIeih0tO*6E&qD!?kSJKZsY2P)?tIo zq3Y2SRj3lhxYZey_w%~5;Q5N`mYGiojf8^a&Gl`LS)SCak%lg{u(kl6-^-I)!$f87FN4d<46^BN=X(*=37?+Jr0-G2Q_y zx4@0PJ+<@wG_L$kA|Uw1wXL0NXhNQ5)1m65F~{0%TpqQ26(15a0xb%R&aN@zuD2#$ zvYCw%Lu#7TNgfYB8!#ULIth7vp#zd5S0 zanCVgIs)qpb^x)g2PQkklQr`TRS2_mE|Idp_8bpr_JT?049V=7kxm(^a6@S>q+A$w z>au<`8|_m+isZhlQf76Rigy=#%UOl`Z4Ds3Qlcjt#T5=SO6xG_f0yL$kzY@%fa$BUza24RuBE0rqHz=Gsb;@(3vrk^7?@u%u#YqZFY4eHD|dXT;A5YvBl0rU z9l{MWg_YPW7&kk29@KHy9b$#TF%yh-EuW(=JGv7`+z8C{Cm`CD1xbb$lZA}Cn_qA= zQ5PfXjiv@FNU46F!}LqJfm;|Fk_hsV^qThd8$AXnPrhTXk%*1k9_DJj#)|w2^YBVg zzyj__5?{?|-eqrTDR&lED^%L=s{xO5L#3%G>45;jkmjWNj&;Un9ddHavQ{U;i67?c z_OBm9iOjX1CFz(Hb{Q-o78*h=`PT1_f5NS|f4H#v$PQ3#e~nJw!Gy3pjg$%+O^-3! zE>k;S>2&?|0s7p0=~^>C@?KrkbW~Rzf3HXi6MI-WW2t(|}>sNp8ni74lMBYpOlKfuNrU^TUu%^%2 zqR%hCa1q<I&G$u#cDOUQX;F{zk0IHJ(^TvdUGM#`#j6E z&Een@fR_t?l01&&?K4VkugJX&m10dx$}h+z5IH9@1+i%Hth;N|q?rnA+A|(j+X!oB zxCo9qX!e>oF>xNwq0g1*C8rFH*T$#48f$}O3&*wVou`jc`EZQ8bd}ON#-y0(v z^dbkTUP8+v+rbX)naF81!l0PRf^ysW+^f#vz4?p~n&wb_sFgU~YT7G8PD8h)loLDWS=o|jTbf2|0|hp>~AdM~ni;9+X% z+2ZAC`cP7$aDGr+Qkdl#eakU@<#w?5ddC1p$O|LsEv$>)${EQ!GVq?u()7hfq;z3u zsa+cF>kp$AN5`o5&uBE^QO`cIqO9c*nt)0({Cs} z3_qw0-?B$B7`2aygEBt!dG~N`zwy{Bs8{mJQGGeBzjw?GTLosj1%7PkhvcrTrxwQ?m>CU>ouW=}Cd7Rt*eUojhv{4v;E zoy%&&eMfb^fs@d|KdKI+hbtXsAvfmrFjqNwIj|$nF z$QuYnx61Ckc<0HcJ2WieFzd>L@3rsO?}DhV#1>EcqFPyH;=8`QuH;PO{E(IMSb1S` zx#GN0i(-5qTO4K9Xt^~K!ac@IAW#=^#DY(+CseJpQ^xH_o&qi@Yuz1^E5F~565&o( zc_UN#$dYicHawd?xphN!NEO#NunhLm;#DtOW;sl1n`;_#Za$43%JhtRYHW7AjVG1Q z3XxG88U{S{-hWW5zIwc1b5s{^N-5s#q>#KhWd0t1X?#B+t+ zAYn8EY#4oh^l@y+5=v)P6LvTGx@3AW;^7jq^jyC4vPY6(a|4FH?5f!S8fu6_1^6SK z#W6F%>e8DDwW*F;mX%&r)ehg{%yY>xCSLB8zkY@|EwVCB5t<>g)eNR*tHyMUw*`*& z7+$*)ak6P_3M*~yp~S4Kx2lQ;6K2n{DE7cw)Ase^<(_}%0?^Q`8k1@&m1J8>^pCyV zWy!8y6kpD5Y*e%tNLt)o41$h^pXfgeOT0W66R?9b=GRGe?}}taG=D~uXey8Oq_qJAKE7J+vcLce|n08IP6^jg&$PN#3H zDwNjSVp1vSH`GE@jT`Y1_P_&Lym-yJ59pyg~%?xw^y+DQ1Cg879z}zA>#33HA0{5xr zXX8Vmj%M9jzNd8Z8qfPzJBAAlCm~iPbAl^%=M7)tW6M&U+Mn`!=XZBJ)03$O)}N2b zm_7RqK8(CM-f0n1TFw~IkS+paEl1M^s!+zp-O6uaNd@`)9Lj!BQI1RTe+fPNj?{9I zU)T4eBK;)&mic%*&!eC>e!fsVHi<^);o2%LD3Kh|I$qLu8o$lLZFekw*X|`LLnsn_ z9K`xCKiSu?Iz+LUrnc|_y}_^2vYKthOQX$(2{|q|Jg6Z15Y}g?ysSX3%Qt!7wpHJf zd7s*oZ4;&tYv;T60~|>va5MqW&pUETB@8#|HUF;4;Q{hiZ2Z|yk%*h59G6>Mx)+Jd z!ddEN=!iY7ilHw{_rOFa#prw^NKn!ARLEP-=uDN47Boy>2^43Fx8R@aQ?>T1k-NxylnD@-h9-?W-{OQxI!WQ*o zpH(4W>2`+QbF%f2_oTU)Kb$)Y$}j!K+EVzNgxPoo;}iDw)8ULCo==TYKhoc*Quk%d zx!WxSl1zY809%n9@^KTl+25L-b_erhL=rd9pYEH@^n|uefYY->OKRMF5qfQxUd;@| zT!SIsVqA6R4z1<)Bm+Dq3OM9iluqu>?;V%cbqZQ~y{ec@!=7fJBQn;`BW`_JVmN06 zuBZAv0h4}<$UBJSYd+90O^if6xni5!W+DO#4-WN4Nl}qJX@J@n3%&=Mbp`lD9>&;4 zJkFJ$cEVNKLZ?D@&Vi~R+_Q;WY^v+_GS}MS&S%rq=by+9nYC>4^%o04jYChb3E@~h z#Mg!Zg%Li%eG1e!Jjt){`kO46SiTXn^$N!uHz=!a^%p7fv7gh_nm|t5)U@PFhQgHp zSbf4v9slb5y!AHTXzfN zdwWKcVv6thMrl zI{>UT#v2Um6rsdvX;3i;O){ytl_vWn>u}$FaR%d zU;dQW(JTaDu@O-C-TR1 zE6pt#*!MmbEjq4a*KP3?i_INY`z@nfBOTTc>sGTBK3(}71)ud78*Chps{5oJ*k)~j zv8lOOQd0VtJ0tOSSwY$9>4$AsHgn99>5In?y1Jj&S}K9n4QXkF9-C1-`D&HANYmMg zsg|>Y*Lh<}yBQ$4f?j%F%X2Uy}>f*wCLO$pWP`-vodPT1_< z-+y^ln(&fpLfdItFq%O@mL3LYKEzQijru%*zf@6p(}(Y$_+ znP#^uyj(i6_uho{B6`t0`_-Y*%pJr8utQ3}(5^lp9MXcy+U56IgAC6dX>l(3Sg zM$`-YqOFI6Q4{**t1-y#HE2!lTlX>XlEm50*3pX0L+YzYs+mk>NIgP$UkZPJH+aOg zHUZZND zc;=3EnUb@es0&xIs~V{ zZ8nSDelIy=>-qbR=;=yt<6!=vG~edZnUB z*g9o#vJ*}tt?oZ|Uvk3YK)8ZX)gTvzN`?;-#raF4u<`aBmQ2_mm%NNYbsU+Q)amMn zVBHoqTQ-H<>{j#UND}3@9VKMAp#1!fM(??aFLXvQAJ!b?+8!>l2+;vxUSOV9T#9l;mHGuYKALe|lW>2>^#Ecc5wei1{?-oA=)ExjwXy zw2Cv{_wwXwl~G{2Lq{KXfsu{5pjKg%r+dC-fzEX#_8ow4;IOgQS|hO)!xIZtg&(bx zxA5E&Ngqr`Us;;CMM;TUOuBrlcC}9Q)jvg_@8EgYTcBffGUjE*z>SUBp8|E7NsxDI z(mVemWWNNvJESMTAMzW1#T+Sg;k&h+=-t<;Yo#9bLNXo&LR)L-CyQC0{Sm)K>@VsC z-xOTaZny=RD8Nm;>!K302m}(sVV)&Ih;|Ul^W%v7Lop*GLtL`IC=mV*Dt;d;#}{%x z7jj>hm}_B47b41=@HjGvSxN_7wSSN)%>PJDzpGO-*Ni8Piu5`>>S75`iL&S=JG3ja;F zF03`VXgxT%C%Ufc%ms&Dp8Af2Xi*>>ZvzLFLVFm*nNa28`U~>$@j>rV>3k%2hap}p zCUNox9Lnq?8cX{d2>>pp(!WAMYg0&Xi9ztI5%upxH2XpR3l1XI42W2>h}a32zCa!z z61A52?f?H81b%TFQ8X8{evtAIfk^;<9g z{aOGy5@r{?McqEb->%?qvAb*fLyb=MNN!^NhdKmyDHu3=F+!V%@V_wm*GJYHa{tS# zvvK$Tko@h;;~^c4l}PXS+v@)^eSiN#h`SdQ^5!J{pXQPYeW>|O}24rZM+guc20v3p2ll!AgnD^~j>F8v7Kb`j}ef~@i zftbyaibZ1;*Cn?iI^A&2L7>&_GwSu-3?ASDVn4Fc7N4Vgx6H*^;CuF%k3U6mZnf76 zd2Y!yLPXcnTU*ru4U5qK^8A>o_J%u#`mMhx4g3|pnREw42L^ZwKEl;}f-q%Gh_@A`0<4B0FDKfcz+l>=V0JZg zssAq}Q->&7#H&!?+rL5mmloJURI3qT=pSu~zJU-hIbZw5`KM}#b}@-U?at^E{G+XY z!{6%wQsT7V`uev+|4qLMqA^Q^jFkUqOM?*ta&ORw$$#tc-;^M7%g_ok`A1vi5fB13 z?)K({e^Mo1d(-b$SrrLsz__$)soANZtV|X%TdAoJt3wH>Lm}q17cD6%Fg9(70ok%&`MQ~i+a0Cpvw#J^0$SOOwej*}^fX&vLz z($dD}=2GlVkLnCWi_Rcgue51gTwYS~@XUH_Z*B1=!%L=Hk;=__eE1Nw$A-z*D;+c3 z$N!r{e?K_)uVH?m_^khtA>`^9L<-)*UCtPP%KQn!(QbBiKFuHUCSP-c0GW-!y8NL_ z0micv12RG2M6s9U)T#=GNDJ<_hoPmE6TvzQ@E86SfCLSf2G2{K#-#opVsL>J5KB&o z17`n&pa+ED7{*(YKO6~EKn}za!kgsp)BFjGyDmgGFF#1V`U}@K#;zc#HbKui5=f_| zIw3~!Fj9>5Cj*#!v5>2wb90bx{Gkf}d^SK8Mq7G5JQ(6WA(JUuh@vZgmipb>|9PWE z5yBObWC-_PDh;RV&*2b2;>jNkVfY=yIVEG_r2fytzo`uW)@xr>bLc;NPaYd9>ifRA z|F@ie3txkw%6K5Y%tnizklSJ+Ul~^>^*2B?kl{^`O_me;uO0;4!6fUrrf%&%K6YMz zrhSJYboJRAvEjE$2;-gI3bc>CiaGh)()8git*pdhi8Gfl-a{hS7Lb23O(Anl*J*UR zec>J%U0mpE7t-Zx5X@|>|G(IK%cv;3@Nblo5ET^!0SQTIX^>Q;1r!9NQMx;ZMpOi( zW9SY60SOskC`GBE8-^4Z7-EQ_^W1~__&oo0);a5}^L}~PdcU|_!##WMeeJ7$SM5mq z(TbJT)hTE>hQ;yJf$c@Ls1{uC@d?Xki(XpR>jToP!jN4qR0zICxxQ`GB6l12st|Ol zp=k=G>cRu}&0eg83p7pn%{F82qb>w6kPOgr3!ewA@aox&rM`nIcdMuZ7l>;ji5h(P zbY~MzbosSk85$ZQ*bB@7>e4F%JFPIKx5URGtm2wI3-f{3b_52TUz%)tgYO{J>{KAH z;Yi@;?k&Gpeq6Uy$k}Gduu>X{kzaaCoRYF~!ep#d*^7f}CcvR;w%T0q`>~RM_`>7i zXHYu+S)sIMSq`*T?rmz_n?5jD&s}E{y=KP=-J8F)O=m&NL_m{U7PdHNMy;YFwyX8h6s+}GDRUszD(VJ8{N6+VpcMb?R_pqH!LYrD&kSKTr?G2H6_ zSVVgJ-{YC|3q0xdK4x<0RXXhX$mXnluCu+J;?Ow=0e1*mgvWbp4Z$9Y^0XU}aD%Ni z&MY=g75&iPh@D$rd*n^W9U|equ$Hn#g$&ds6*nmSC7eiax5tZNiH8)kY4?|# zuy-(Snl$}7PRF(BDqNwO{z@(P3X9LKDctbdZW9RP1$gu9{1l}xy8p&xah1Z5gI^_( zcxH;;=G+s^8Oyf4UDm{7LL&OO@vH@Ix`!8S)Z?uZA-=K106XJM=?;<`IkkIMLxk39 zFR0zEIO=V>QH#)XwtObyS+zT{H@4TB3_qz(E8mX3px8rT;@|80ojVtTN?(j;E1ex) z@ldgv#75iKmi&0iGS0Yk8du=kJ^Il}Jaog^2Hj#1+Z?-;G#g1c zfk(2pKgJ6F*QW_6z!Pv(6tL{~*}GK|TbFMMI)5bh!$LHy^g&q z52-*NZ9I$DWA7Hs2Ka2Qa8%T;S|YWyxWTEc+YKGDD(UEj64F-1L$XRq-ulK*6;QSu zQDZwDBbP8cu@sGO%3jqG8-ZcZUji!Y^}S~1xQBP#jxZufAGM29j+0tVWsfT$Hrm{F z8hRy4cWH3Yz8kDJapa!(_HLU${G?t3aWbb;$cH`oZj>%IM@>wPR$trfb*1xRCsOLN z#d(kLLf^N`l&9;kZ>!)m?qG10IREYG>t{&&ARvT7+AuU=z=E;B0Y;ZZaF<4-^NcPO zQ6TAi^5rq2R}ad^-!3eU1!=}skdw)%pdC(U9P8#jLGn;7)OEdU}t(D}n@uOkjc3H=br6~qz z{z;fEoHQn88-*C?c*R=d>@MON^JxqUDXjY`(-YSazKRkWzarFKDi7#5+N2CO46_qr zJki@`NAEGjo%P1P>TcUSpDr&38zz4@C8gE)dOIl32m~wH+6#e{n6Y*5x69_QdU zu|uYFS$8*pz}!o%+@-`kmRuYl$m+Q znom`hJw5{}`}=Z#PMY$)Q_gJg(^CD~fnI}L2jDlPQ-DS7Zbk!itdPyDv|y{qqpQLV zG$pEu40(Ew>^&B@j(c1Xa7doOUV4fd<)Ob>qi@yK;d;66+DUn_L z51s~Qf^Z4N)*ZHpSl%s_v~{DOg3+YFBJCLTyGBE;d*R4kmkx|b4;h@zcbSPzpu5(- z?L40ln?e^cv8~cPb};PHFW-?08ccnA_|^#)*66bHyr)^#1fHzck->X`|UG4e35;+5?d ze!372P7qtP*Kd4rxi#%xFr9v)V-gp;V~H!bwA-!k7~nGdGSJi@0g&coi~s_MzJF}RmZhSp&vw5RAp{eaMwn=`ST>s)5Y(K^03Ut zpoQgF7A3V<=jQK<8Rsq~qLibu5uz`vt}Kshyrc20zrsa!=s9I>0oABxo3A7pd4u*{ zyoa303BE$julkPMs!?qrQwBfzra*w$bFTzM8=Ffk8^51p{`wc50((D<^My@5d$SXZ zMAF~_>TYHPTpjqi%h@LWaiLPJ`%APzXkI3p$y-DtERT>~lpURu+(6ZYiW z`!K&zuPz@DOU7Z35c-M|=?#?dSM7%>W)mb#AyqTOc;pxp(@ZqB4{LTyz4i;60Q1eO zd!E+f=A@>+D!j+vP*y}iYJilDH7|$ThHQ!%D5`;E(MI$8%&7c7Tl_XZwLg? zVdPHwQVjujCaxOfLY_|8jB#r{T^fS2dovpuzECfee9_B8Nr(F!p!Bvw?so8heZGHo z+BIOYJv}28qf6SnK6aAMsdw0T;v#QHEReEsdVcz1#hGd$jAVvn>G+!utAVcw=Opx$ zxX|XkmbuCFd%k%HRCf0hhPHuZvsd)#gVR(mc7E_IQ^KN9DVUZq2f~#Qf9`2OekLRM z&4?sQJBowZR~|;xvJYIfuq8Jy6rCLu8Ko${6H{-enz)pDBP_{b;bDHgHRTKLZ8eQE zF$1;ud4liU{AV#31)SW3q*;h1{gt46V=Fz^(v&LgJLYdD#@qh zo5^zU=;~&>xth*Y?^)S+S5>>2W>_vpVbsjQLqI)}A7KT44v^q>RRIgO_k;8_^gt66_AoVfNiJc-q^;_4AzqAFop1yAasNiXKjFdS z%+gX-$+H6!wtM#!U`9XJ34XYq3}@6mI9H~6E+fIclQ#%lX#fW)C}FmDz1<7Yu%GA{ zr~vcLe&4tmYrM(73H=BUgC=*zj4#j`VT823W1W)P?^D5i4fw7D#;|&ySV~}Y-G#yf z{=riKC@vkOqW$k@o8f?Enx>V~jr{Z2g; z0LtJ9jJX1;{Nhk9{;9{rF4nhlcK`MB^w;Tu?OD?iG>MwNpU|pnF z&SU~(F-%hecyMYuJC!I!opZ^^$<0%E)*sTF;JCTDRhV}tlkW-(2q^gaHY^7>o*wUu zp~)#HYP0zsFii3UM$J zU5Jv&t*H@7%uy)2@t)zSh6baU`)je6jy-Tyf%5RfiSWq1`JI#au#ku44pvn)F{BjW@ zKMC2mxWXq(3|77OQStjT{zlWFB^pWr%cvdXpghpMsP4?dJ?%7IDi=!`c;)i)7Px3$ zJZLK08pD%;0+$aM0+e$oH1EzTVmIhJ1GD!k?57?qrPpk4J1?m#scdxR`ioF{ck%N1 z95^NkJEW5;?4hPoU`b*@osEB3So#jYz9J&FD>c&HrFIotVY-FOQ`$%In~q5l%II78YB65_g97>#HYKP`wo8{*r&%c2`RGOXVi%WNeD3|1bXS`L0)%@u?0sqIE~ zE1cSq`>q%T4gDY5uO)O!bZ=b9s~jsTBRIt9s>WdxYYI5xhq;`A(sGk&BJ+2 z`mhxdya@L9>iv|#P~5{4L%G2PW=06MGRk-4-Ut@RLq4+mct~4JPW=M;8H?oJ@_iaH_ov29YeXA5ro>}+>E4tT zk(IM9uCX8#Z_J9QU1ofH;f&pwrLAec;`WNh;Cw}9yX96lh+q(QzLWQzLVsHrD>U~$uj&1GcL5}H@nNp#0D?@nIcN_o-DjILT(J+gdWKq_dVJa}( ziGE(1PU^?Ln7h&8Bpx`RETgD*VaR>hfnyj9wDX6oEOgAAvY$M(YZrBHVQW)5XDk)O zo;)WVKlpg^s)N3uUC{_CZT^Ik$4JaIAa3bLY2HVs`Vu7jr!k%Jn1BGoSMi|*^43W- z4L-&E$1Htj6{bp=$9PFiCw@pN)MXusCSK22WW`Ac$J-^feD|m7Zm9*;!*LgYDhfz! z)VPLO*!jM7J{#^$0v8A3HnQ*b`hDS@3s_4!_z(vstK<8w%Neb#q64mjg~rG4d>~?C zq<1B7>bS>aa{Kw@qs$p6uyPB^p(CH>_=#8G&h5!w$&?CNNv+?01^p@Dsvw2;EyF=9 zo?$MX-8l{0x|L$b6ke}6%fdbJ;d;}`_%1L#IsDAZHjo^ZO5VkRSdq@M#aZR#GyKax zxh|dQ0xXt>HgUic=j!V}o)Mq2qWZ@L@&uAMJuN}r-S9MOnaRbs#jYP8te#M+;Tsc;hH#X;a=h`IA7QjJDzKqSh zb17N5jKGr8-!PBeMDbGIAp9)-)4znILoafgE3)zIEqwN7T)#u0C$FA zy}T7@d%fM~{&Pl$Deu_HtuO z4*<)BRWr=q>}#536?;#8mNwI#!ul>Z*BII*VO=o^T4dZt#m84Pc{T0a9_rQ<3j^qN zE%5oBC8VXW+l9}Ys|vWgZq;$XRC7G_-K^3YxU^_j$ly`uXCektd^&a+f@>-|Qul6S z7-VUb1=l9b9zF`3*yBs^GmXJxK+3+l}i;s=?pTE<)0qj^< znP>X1F97kXLf})y#oYV<{q+Ck*%*$fPVb=ydex|zalV*hSt~+Mjez;~lzF*gKmr1v z5FM}t%u6*tIlcVMq5AT{R^p~fM#b)auscX5z~meC{9_KxW2Toej~$o99NIk8@w@(u zT@U9x!X-^r156lP_J%GpiAv4F*!uZcg%p9VgiNbtYaQ&Yx)~Ze?o~$$GR+P+cVzsi zpB-UhVY!%GpI~X+f70lLOa{QG$Xv4b(kple#J(%GY?OhvfTr(Fh|a_mLrA*=p*gdq znm+dbkRUT2z=0e$Z~mn&@V~${AXfwHamv#CE1H-kH~?j)1zb-SAT5vQnF^908pHS? z7w2M`0jzUe-yRNR>0>BOnJYQfat8j%>C=bf99n$}D*_H82#3mX5rI&uYA$Y2Yp66E zt99ql8mC<2)BFcMHIf3lV=8LkE}ky&*lbB%oi5PVocvmZx~3Mle8gK`t>1U;ELjG| z@;=O7mi-Tui{ixQ&U%u-v`8P7heKs~i;PSG%xz%0*cl%K1~1_`3Vj^REN0|^`l}jx z`g7^6_SLyk|E^!c>}?z1v=|4a5JJ=V0DO%fKYk1pYx971hqcXs*&OQX>Ob*x4-XFq zlEC;j%(6dv#)U7I08&&d+5xS<*)<>%ujb8we2}8{31cRhg@uE#0$aby@6;6Vtod9J zPeczFV$Ht2AsYB%Gpd@kKJi5v=niM$Y1oMYE|Gg)bq%LRHM+tj051lVO7K3s6az&9 zDFDQIQig>!&Jq<$;^vi5V$qxKd@vU*hCQ;q2s7LI`NMg(IZ)Njh^LK{gTtkB7)uq{ z8c^Fu-zd! zsn-AejGTnQN{zJYNyD3ps;VK;*n&X)moHxq^xUZ~;98Jv=D_h6ZD{-A9#e1WHb)O!$Ej<(* zntx=3>cH2bYS*FI-;3ZZm>21DcS`jzb=BQ4X_KItmoq3ig{KT8ysVn9Z*YscNNoYP zzc&)jo}Da7iGklDldxET=m+ugshy^#CZF9z)kh}e0T$htpVwHNf%e3RDIc!B5hv7Y z&!8y4+Vq*2@3M1nm@TwN_bk4|rjf4;2jt)sb^@g9b#qsZ(7QJupY|2(H!;uOW$~g* zJ=wqEF?^OPGP+fXcaM<+Ss2XV%mGHH(@*FFI ztCKq|)2Jz^8PGu7GcIZX0b2^1J#l>4JB!RqJlc!_#t$gU%D$~E4b*36i9kR9sGdK1 zi6PRZY(IGKLUw>OX&9DjFV-^Y-p(yiLGgVb)0?Y=rg_c5IqYe{ftFaNz2?XyuB&kj zOYYDfL99U&dS~Z?)e65pc%54@rb?jo10|#U9j7;FypHzMiON!=%V%fD8!)krdd4GH z3E$2hj8gtw_hX`!ez3e-h&d04sot6T}ej} zsj0q7iAN;z`+Fs*GznyW#d{41GoSU)z40omSah1BS2gD?i@6Eg+mtcvPb=+WZ6|fP zZpmDW_gg&ih<>hr`63e_of(8vSgVs46#i1UiSSO;TQpDX4XLv%@w(axp0sUSDO;=p zi`k?7jg3^dK^U8jwN36w{f?xF1Sy5zThk^Y)P&dY@W_MX(dGI&T>*NaA|%r#K@Dbq zjZgw6*TT%yd;aSE9Yat}ml2cz023D~wEZUb%!y(=$p@WHYB%Fxar6@N_UIS?=y87{ zNI|=B(@ULMcn`~%$)hEz)O9$d7u5IOciZ&fiVi`OCltuZ2`MV~{RWd}tM(SL@UHYC zXZR-(12GGd+xp^;%M}5sMSHi=a9V?B_PfT|=`$RB|&WzJ|=-Iufn|6Bo zF;+X>`*Hfo^IYZr>$Q8?vAIUWUWdai$_vDW@pnmk;_0;aLe&-1Y<16@w%cDXna;)y zn(g_bP2J-3nevPPAo)2krJBiEuRwR{GGfxrwW#a180(iQ-W5V0=iT7#Vvf=!k-c^v zoVGXe_@U;QLsul*RKWs2jtwB!#1u+CR`r@iIi3e!jdQT|d*OFju-|pWRmm754AZ&)pplDCMMQw2D4jVuB>ATeFrbkEdNL=MkQ)7xzb0DPOEQ9l7z+uyP za9V=z^Ea99{KAVLA;fzO*kyX$G)v(&3>w^BT68{b-K34>ZZP1c(_&GFJnIqNVAnAw zrs7kzKR9x7UWv{zU5heQw;fFS$0A}3R41P2WwTDp23^Mx(2lGh?(uUdEk?!oPxEQP^w<3_~$3*U^+4TTibuh0s~l^&mktM7krso0^Aib2Z1gGe0> z-4R6=3@)bcYR=)IE32(SE&(vQ2&=7JTRy`5Vy_1}0Kn+YftNN8cf>XwYaaB^$@D~1 ztBPusitkT25>eB|8`YmY)37>ZmM}fRAnEh1R9kaHeNYfrt8Y++b} z3&YZP*A9w?q>eSUAFcjCHN5LMoZ%}gq)1f0N1Y?Y-!v5GRtWtx0*#3QQfGL^y6;Z= zl0IznJ$bath1a<_Fe8|#9rpMiXx4(08VK9OI>2@3bIdJLEmwa6CBS>Pup2_C#ms~pWd~#5(Rw5rk zhIf-zzENWw0Y}P%kMBgm#*XHFAta5rk;&85$6u+*E=3wfNA(j4v09# z+RNO1LME1|1EW=$?U5W0SWcOL;)|~=+CR-$^_eLD0!s$K0x(Fwkfo=_4P+Vqx06PJ^ z*&brkBasasl6$|>^%@u=W9p1w5iUz`?KLJ~N|WVyX_O4z&aDP2EwqsnZlCp=P`7a4? zBSP-7v5j%NL?&~37#_Z__cqI0E1Tw#z;|;Q?g7%Sxia*(+CUE`RDM+{7XtpSavB#i zV-#QDbKj2~D50m!jn*eHgvnX+aOI_Z15fcTC} zk?S$U6U*@lSr$aDp+<((m&*T^RMOwY?rCQJ{+I>tLvTe5H#_1sY43=W4eA4;1Mou9OfCd;m@&_wiu(d)F@Ts~e+m-)*`v3fF z;KJqHZQ3tA2_?rK)gKnDpHbmVlg)~3BWn6FA#Hk%i^u@UeT}9^Ln$RVe&Q@AV+FRS zr&$Km*Jl$qTSfYnFpnku4j`DG={`-M!~4b6eg_6QBuS*RiS4Npf*5U-bQ5Ef*rZov z>1l8}jySw4IzvX5o+r?hNDf@zOu=f4nvsh;!)V3A8^8gEbL9QwzFZJX5pdm=AFy3w zh31nOtkL?Hm$|<4Z*#CK==eJu#O~;GvlmPpeepi2PbUs3g@~K0#zVFp2el53Bc5w zeEJ@IdzAF2-RXV}S2}1DqOXGJXSQDSKe&`hIY9YdEVH60p=n_NzV4+yjDRgR` z^MGruMX^(_t_Uozw8Kytu@uuru#pE<+*7R=#Q*?F0rL0&oVJjn&VZxCocZ;+lT-Q5 z%CNGb@2)1`FO~tLdqe`Y{QMeS5qV#A6`z&6?5SKV0b~Y`Ze{ZRe)U;K02J=@8xPz% zCtS`8>A3vb7HhQ3NNT*%7uuC7s-Y@*Xqt5YXx-PdExUYA+!hV%g46G_W3!DVbIR}<>HBs(QnY47X)$z)LJAMaqssUeo4xM%C zJZFeMy;WK2l~cO zFCQ0J%Ll5RXfPCySGd%dKa@ieCH0i^MAa;B_lv z(2dQ|09x-SzxL}Y*Gz$(dd93_w7a{TR&ER^W@h6^VmRB?8iD4O=>}*V7%XNn^T4}n zxkYV7V!@Z@Z=F)Gd>nqkjwZ^y+R+AK1I%VFJGM$d85wMi^4$T9v^aAP1E;ay;gw)>iXO z+va>Pzsl_Px`=}V%|%bi_00rK?hdF=e{Xm>p9i3fC3&9-<49Zt$!7TqO5s5pCbYmx zh_e-err*i9NKro|1+d`~t-z^Gp5d!J5{tfo(n=C5M{u`uWq_ej!M+qyd>SmwPup!? zsITNIu0D=`QN;gC0V*^El;MZ~_{uqE3hDvtNfXN}D(cjMfHQN``ELs@Cs8-xsnO|T zE|e<#_|b7hFv>;kL$DsB8!RM3ennThNJHMra4VoKSVP| zhPW^&~()> zsJfML#4q=+o9L;GIe!Uwr5TKzQo^eWE&C(usls=0&Herg-=`URj%j|iraF$*A+Q*+Q`I5yZ7m%-Bp)gP6vjj8o(bac@Z=6((Kaup_#$X?|JbXLMs&!qS zxi7!pyiI~rBk%!N^Os8rh`ZGmg^O{a z=btf#ZKU7z;5q9P;#m>j=~#7!shPtF1fK~*6s{yyen32$T1%R^9l2(8kLw>bdVTpL zhIwTBq`%@5yH7v6vlqraD>QOvD|HGqzZhny!KWd!JxA)Y7$PY4lUx@)4&BZ`pK(Gb zLc6TBI+74sT>GUHl#qH?TUTlu-y}Cx`N+aQ?%Q?3(f}UrtPg@dd(Mq7;EEfG(((pk zbw+Kvl(pK8WPA6mWTTNcRuAW{yuHy;qJ>81ePhyEpny!oq26@W0i%hBf-#yBqb`BI zJ`ao83Of-Sq56A+y-g3Dh@-Rr)B@1@?%0c#*k~^)hA;JcJu9N3)F9*3cJ2hdc&1IwbAEi{mgF>X1$2t8RwXq{k@JG14~q&G zPUO(YNAIw}-5)_yZ!hY|f1fqb zhC(>|fM{$4mF26q81i<%BVM~SN}0TYvv<-XkF$PPjL$#*u&)WtC3^f`W1+{da$!+; zCeFeJpl@qg7TvF){?ip*FXqwarKv(D39%j%pXl1h z&JdjXpX$rxN&e zd>q<8m#N%mWZhmQnu*F{iHb<`2w~b3C(|xTGwO;1E$OKe{S^v3B2z`eJ}v%+M&Hmo zBcszCnw$hl^eT*RU#AnKyshN}Irb*dq^dKU$*U$1ITzP&p`hDyX*Q;NmA&n&7Cw3j zWk=QZ{G)GJcp|N9No=?S)3$ri2(rbvjZjSrB!~R%eQlM}*A-(Zlre|BBIbq(gHhvDZ|38m2eq1%Pw;82j*ipgM;iU_(j_I9wplT3 zO+q`vRGw~ayT$f?JM3zC;u@MEoErb{W)fGeW)JXFcXB3!OWK8AS&CB~V_50+5nUl` zz;kD;={ntWZSAiAfwV*3DfNLO#Q z{kDzc>|iZ!Bbh%}J9!&=b&6>;GF&P_brFC?|M-@fu{fezw4TO|*F_4-Pb^(j!hDdF z62BVj(Nu%$`tvuZN?lYcc~bliCcfD0T9G*w;1XPG2QHXg{4#3DujXB^9var*=EeSe zx7HS3X{6K%O;KiT7a# z$tm`+toF9xQQSxGHJ?LutPp=rWi)aud6-Sg3*XX-3}-0bU2*b>K!#UUhRg>*f8 zw;`+!D|)D2s{4COH3J-f>>+)!G;ENd-`Vq?ic~vr&8AWnNtIL2Bd?FaNe)F{zPQ*u z<8*0d+?_XT``R-fF2ABDbM>!`7GiL*MbO)o6>BzjcI(SOZD$c@0V&qco4{oWBbvuW zi0FrR=A#>DUO#SS^exE(+@;@#7x)}gz%xkl`Cp!Os_THF3idmD6Q#xgQi0nOcU-*l zl8YN60(Z^DV;pG9z5_19bffLBASZ?gHX|_QD}cc*Gi+EG);5ZtkCZa>+FN7Gdis$q z3f&XsnUhC#e|hj~)4@;Tw)%>S0nkyw)!EyTI}s*&^U>2IPk{!>Kf1jL&*xV2?&_#o zwZjZIzeP`6teT__%acTUU`nt`yg?>x>WdASQ?L4op%;>w@`3Bej}7>CD6EJrg_$x1 zV711Cr~gXHuwMeaPqwFklkYOJzS%<_z5Zhv>7%Rz5o(i#rEEVISCi;`JwyDWtMJKz?#-A6@BL1o zL$dY*U&o$x$$m|ILc#+Jkzpv%mxo+S(Q5N#qLff|3i%+PIyL?mn9SbAp22gpE~PUS zj9UK3r(Rjz4eLva;mTA?8>*D_%2%1%y(P*^8_iItrv`Xy+G5Oq-LzcgW^L@$>~Z5q zxT5Dpg3EH|9RE_L)HH~UJX34b?^tWuaylURsU%{y{-@j)E5kVd&2yO zu`YyNdI{rNIw<_h0RsLmtqTM%{=Yu^GBAqllP>pLYIhb&rrJfs+9drC*yv>f`Iz94 zpMUf(5H#hA+EvT?Fw$}Yp^L4^Fl4T^`KGt(zxQ#i4n=15K0&m2peT1C!X{6lkqufV zCbN<ZJvnZI{qb4+B{RN{e zt7`PO6r&g#ZJMcahHO;)q_c~V1dl=fB70?HWoY2qVWJGP@%KG-W!B<6EU#~PBBE_wG>bzhblBRs6@qx|8ezdkCxVS(FMO~Ub zJ5HTMXLGPHC>~TtJ2j@QzYk5XR~W~V1C6Sd0WWtGjX2#+$FXKyJz!BGAW2; z?UGo&!E1W*`^8HN4^0I7;p-E^uXqc%eav}$64Zt5<108=lpx*-bt}TE`}#~%4nsnM zR9$*ZdFS@<`_DR!+>rBSp9 z)ZD%7(GuD$~K@mCRm#(UZGnil_)*m7uuFdEX9@jl8Esm8w#2o!kO~)ofo%OL3U) zjQ*I!eM))6uIA2dKgX_0CDDxcLoVp_Yq=w?UHH>=qAOEZl3l)(n#lt^vZR? z4k!YLZG!j53+}i&mv4x?Re{hG1@?C;QLhKY%zC9p+8f2%l;+}G@?Jo1^1-Xt_Z?#D zSdF5m5LwK}>EaqI)X*{GpV_G?JW(-HSE5$HAEtyy6SodBYFg3OzM$4SrB=*|NqK z*mShOCU?(bNulR-RAIdROnqxdm(}4kAcsj{n)8~Zl69n{?#j_J>AlX}qoP&QnSPl? zX^5e7bM5}>)ed1Ng`JcB;`q&43DV3p559#@ylQNp*kbEKNb^vc2rS$41(@0BBI!@p zX1x1+3VS{J%L{CY&c&8vb0|kt(GOMKDGvTTukTnyzE%}$jpwSdtL|)um6d7h5z`qH z{C>7V^(;Tab~*EqQyX;m*Xte^HBGeX^!CTPOZlq1pDei+ih89!?`~`ZEi28%?8ZRd z%Sj#IHj3&}Jvq7aV9zH1)aJ?cszLD=h_{>7tQm1d9l*9`mDTw{*>9*qQY!;y>NVWC z4&FYelXzyWDj1z*C7(_i*%P-a;MFVDtpkfz|BSd?II%-KK66{UjYHUCJ^S;n1b;3< z8Q1i@rqXPb?~Ce=-{S)Fix#b4oP3~0@24M=btWWF+hG+TcCDOQE?>43ik7tx(?BKFBotSnAV{44RS5X&y6vUYJ?V*;4OMLB{Z6Ty{_o=yCuE2*Y1@DN3 z_Kii0Q73cjT>f?31st?@HF>5O7ZDHH&D5rB)7`c-#*g7PdDW4tocgddy|Uq?N^i4y z)81IA_)wRPm;vubhPx6vVYKkaluU9k6CGCqov{qSr?s~}3 zA;x8-WbgTqs;eRB*r4ggRRTIPGkH>5auJFmrL!th0}85$xTBj>q9CeNJP8d_7p46z?XgT=hTpEhH9hDHJuVo!g>gy9;&`=^l^A zG<*Gagujx$|M1XNg0H*ialU-1O{1li`?-7Xpf7&UlqZ0nCZ-PFNy@`e1R1V-u;T)d zP-B|)`fJhR$`xK#&tijWLw8#vc1`VN%8d6N@l94?E~4qBZ<#i7C?4$?~f`^6nYgK zSf|U|c%Vmw5<>Hi2p~z~!pesv=84Km@=Dzhxi6Ci9n!HaYI}V`@8A|FIUloF-l^#W zU3PEz#E(`@)l*Nr4eUq?1kOK&(cbsS*IybKg44z)XGFwJ!rGJ$2h7V37FQ(VZJ1`v z(kkJ*(4k4|gumANHP>u}f$O*`$}Aq_a`{)w&D%Zk=6lJb?6|a%v%Egtu!ehU!*DmJe zv!9|>NVG!qP_s%)WrT0f%{~eHFv<2#-!&+hwAVEu5H~Cy|2ur;x^ZB8VrwZJq-3dn zqj?-34$8hddV=z07;Rbfsnfm8lfiJSC0KF)YYQ*}E!gaQQrmO}yc5&#s_-yyy2-UE z?kXLpS+Tp4Wf!Q&*XgZBtI}w>Mi=g5d!hJx76ZAnVzM{7OB6_!FH+}8?HZ#Bhabz; zPx?jG_bazb^|FidX187PCgWzN#M>GD7nmzHf?40d&HWIKzQJTuTV9h`rCFauXJad# zRU9)*keai2x56fuAl}1|L_Z_(3+Sfar35?M@{yS9xY^A68uU-la5EgKk$$M@p%+@> zCAnG4>LXWyiXqjT6$8nk60&3E75C3t@)q_+bM5C$)Ti3?S*#lKjrWht5ZFv4${lZ_ z2kbWQvt>9|kolQ^dpNZhsr})Q*nFmZ!0tc+-3KOM(q{Z|PebNqp(2-HVO_i$CT#tPWb*aAhgprTDF!38k_Y{zaI-XdZ)6)t<$N1x zPoWb)Cupd|gO+6vuIQaU^i5889EGntueo*njKFm6Vj|y)3T1!(9X-~FH{<<|&EI1+45%<>ZjcD$&)s{ozCeQiD z8%`fA+3I_qv$LfM*--&nP0h+a2aCZ zO~Qa-sfkr1LFtwUQo?J`R?&`2D zcKFc!4J3dypiI&di@rNmx?Hd6r%|qGWBKfzH$i1X7k)6;U@UZ`VydJwVgRKD`pLB5 zQ#FR?fPgrm#!F{QoPtNY0y3W4Y5jy`#pe}ELTWigvwl>8;fk;~4`lzI7B&yz_Xru? z>giT?_i1OFNry1Tl8S63!s<=d^DImmv){?5BxNjQhTc?gJ_(o}~GqY{_U z%$$(+wH=x}(LMhZzygXs@Wy-c982A*4n%l$cYf`@8xMS)s9TJ*`A4xd^^le$MRBaq zRL}fyOSLMYzz!wzaZiMnbmNeUB;y4Bz+c69eG?iGF0&?H(NsPlm|ph-3ol zJjR#E%(R7J^vf%iK^VunP?|h9yb2#pmS|-T^;OUF4bAf{%FAD^NLZRS9~3Y^FXzHg zU=^4D`Fa%^%{0Q6#3?`DwVJ66vdT@k9+N4Ejk+3CtHoC#Q3B91Z+mwu_CapwQr)N6 zDb{-OvqCGyl$aaMRzU*yLxp8+TuqlIL2K1+`F-upUHEqHrEXC4a-Dspoil+;vbm9Y zxm5)y<>rfj#aFQcKao1NU6~M}7Oq*M`hd)}5=wL-uuite71|f)i$qjvEL3<)=+dT; zi$+!(nWopQb^xU>9G}BOuY?LrHBKInRav^o4mrD~sG`K{R9LU}+1BMF>!#Fz<6W)u zP5O~fuLl0lh#`9DrAep2>Y-NbEd&)w4P@2JG#UD--45mJHZD;MsU371w-0-=F$5?= z)h6klU9)LaXce!}=K)YvhtQb)sGHb0urZ{&=!8CmBlqfv>-b37p_>6KbSfbWB)~P2 zd+1tWccp9#Gw$G@jaEEs_Va_-Rc0JdxljjK(WaDI0cVdebYFrXQJ|{zP|TrRVjApe(^`YA9~SeV@s-%@wVEmc_-y;SdkPNR*L57~ z?ETP>`|iv##GCgsZ&V(OE;*H-Yt;+d?Q(7+1!lSvu=b7`{$g9;0Vf! zn6^l}3`ti`FV5YPAHCM=+4=&`b{$gRC0_-=7Wv7x_^v1~>&Jngd{85CqAwra87F`> zCp^HfTUd@v12A00O^cU2(HZ|Njro;k{+r8(fycbcYdY_EZLQ~fgC)#qj?xz;%L`5V zV{6>Dg~#QuI2Pl&@V+Zp5JSBz+&uu{giRmlNMsts!7Nr{VCOF-gig!*MJ-y>auCl^ zF~8sY*A@)lNc(N{zItbwLHYVl%Wbc=Es*+*B=7Ne^OrpR-aaJ}M{48pR~>6PTdqqA zQ7o8E$ipiFM>&GVhMdihI^0qXQExIltvhNjNb!d%funb$C z4}i-y%M0v!H~^r7%!u9h5eI0J=XEc6pFUDWQc?{o&tLalg~p0qR-SM%0pH1s9&7&* zQb_p5f8RGf7Rv=o2=YPgLz5Z5OBBp#YmUF_WsVwMc=`)+Npjx_n?s%RyNzxEut3Vt z7sZMCoFHy0>g!ittqmXUo~n%|Ajn5a3i=h{y+3j55_`c2`f!f z@#=E6jO-LHriiS(+Jds`YE^NrG1vK2SlAp?`n8^$?qz$z3~6SosVKaz!KvQVC>TD# z)zYdGx1^~giMsu>&m`vuLUCh9Z9r#U{ME`$=>Iqn=H@FmV4YVU-cg?XQsN;k15?BMyZ=|$)*hC0mWB~soSsdsoGhHgrZT6QNyjmSG+_$K zjM63>?~>`PYl8m%#h?}#v;wY~m+9SX1Vr6T~3R*B@W6 zOKJS6h3mpNTS|Ft(PGKVNT(1*DcJrVm~Y1- z^OnsD=3`jsI=P()egzc<>_@L+hri5jPz?0OH2h_BlQaScGETJs{m$LZA_dTrnR49kS|Uh2f}jH}4ZM>fpg4Uw^1WXHCK5nCPG$k@=4K^|W7 zj;$xZ#uX)`miSCLGbXCLODbo5`O#srsl%2E_Whr$6Fs@12C}v3zzv1)DKR)u_K|E{5vJH3_HioIzwH0ST-1& z#AKo$zmk5d42r9eo4$Bt>FdlIY>&wc@Pe=O#gAj)& z>MC&2sM*?A(7-gaF%=xW*_Q`1L&+;Gw^qA9wSe_&kS~zT2Z3@bS1I& zLxK{LjZCUV_(cxa?_1x>Q8zuZ2HM(5kE~@VTnL{rkn0`7yt7MYy(rXk~-o1p5!cVxFFo>-!tlem{Vn+KR3re8MY&j$yY*76r4JeTOJi6dB)3S@8LSwqHEcz}}D1y$cG? zIcvsg4_bsyj?On0Fc%1s5sUHnTK_Xk|BLgzqrn41;!JvpGz+H zSS()%q?{=<$m2|D?stlnk~-HnYlyy{1Q$N7Q+c;@*df4R6?%`L};2o zJ#p;_;5>C0c<0q58P7a8GSM6LrpNuB^8hvEMZ+3yrG#=XTl5OK>0ZQSAYYXjZ-%^wOOl2tExyRA{D<}>+VA)dd=^XrZN~R zh>ZgIzC2e}7kfSZpJ7e;0TGJ?Y12{Ev-!b#pkNdSpPLuys6{z^>ZK_eW{+|*mNoqD z$o%!a+PiM@zRb0@`n`%jdy4$zZ~O#hHCqDfP)>)hAmEV*eSLA+_wYxV=-`Q=pDb*- zqnAfs`jZnIh*h2=ew&gIUwfM7*ybETjNHl*b+kmq5of-+8Bx>{YO;B?_h#`n7S#rF zNZAk3;jUAM;TOY)DJnX`LHm>-7BVvJFIiAMb5x`4CH%|i^{NL>kH22HSu7jweZoh#8NZrn7#9c6|{T_TtI3Tp^zwf0tE=$OnwnR+H3|KlUNUdYBVr zRZZu!hpTLbW*N-u%cRw4Ak{QUS<yODpE`~xR%>{*#BkVo}Sa9rENSWgz5>8qV3Ot2&cMlmPF zJ-gyZSIThBuG>qp|AY@hwt^w-I4fjWa}oEcQ!y@ulQz zG~;z53n=t3u&Hns!*; z@P@EjJ1p7*nB4g9=q_16#*Tv#MqzO|9J~5;3ylgiQb5(Fq((=FeGO3iIk63xk`zQQ zAUEnoOG)!=}bJmv8=9;inA{Wh&$?x9Wxv)l_*kZ!qQ-Ce5B1pVz_Z;p7m literal 0 HcmV?d00001 diff --git a/html/html/walk8_p2.png b/html/html/walk8_p2.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ed248397def566111a4d88f8efb986a6201fb3 GIT binary patch literal 44139 zcmZs?b9kgp(>@&A+E|-xY}>Z6!DeIIcCyJN8{4*xjcwaDCf2w2K6sz|{(XPUaZLAI zS9N#Q*2*#?FhYUgp0ur+zUsYLJNl+L; z7)25Fry?w53|dq+OzxcS(Y4p6ccH30lbk&D#j=+u|(B@0vag3!PQ zM9`#qWu9-04rJf~M9{1SGBgC-Z!KhBL}|O5QT(nunH}STII;+-X3@6YCrsDZfb}E^ zkPyrcVkQn^2SLg-2M@xmr#XRhd;s}EG7AbKLU43}4g&%ph@4+*55E9m-0x=31qBrf zZN?i2sQfq>Jl$lBIeLy(Ae}xXdVTrT#kL*d?9~(S7C!yU=T#pI^d0r;<=I)Omz-qk zW68kkXxno*qu3BZKx^AmVCh3+>>FO#^5>})v_yjM(}IhJg}#PtlZt%s*uBmqbz627 zA_%`&hFCb)#!hVAy&{|LnXu8nxi?BAUl0lOcZ%lqCdc&NgiOJ}TVmh#G=HX@QT{Y= z6&Aoh;P!R--THQXUF6V~3vBy1&-8H>O6VNj#%&3U4&Tw{7x8W{f0s4Mo(S&3b=$n`_xk#26(0)j3udoF7_2TJR_2yB}BJ#z_+odri^=ENubaCZNTZ9Yjk=S zVk6+OXneE6zQ_9g`WSr8;8j9CXq9u0;GTYLnc`UA`n`q|_)x|X+Ymb%+vfWmv?C#v zx2LF0sTPkb4QrQsq%RsGRU_2-g1|-a3P~QVM ziTNcVVnZ-U*d#x3!)XcL|AgOzgcL?q#CL*{4rR^(D~2cyImvlZq?kiS6tT_GGQ)X> zdlMx_g@B+7KS=m=N0(<;d}zGCXnz zVnGGw48nZFV1&Z?k)_Jge-t!8@(!;1eNtC8RZ zjwgD3AZCZtZibUD9h@E|DQL8Rev5EdZyU>=$4#1-NDs&MhwGrkF3Z*aBl|0{58*En zVKGv{TGa}4lwL;R;BXXsp7V;+|9;vL+KzehcW7=b6FgBs&Y&knJ zQ51SqYFL7xrXWOSW@aB|L}ut(yIL8ec_W3PjTq~=*`E<{c(HA96hA-3a>V^2{gCx9 z+RB^Cx62L787eT#$IjO*=u^2-u~0#y+NFZ0x>V^bT+7eRiOpp$fXi+bR1=w3Xb=Sy z926}SxD?43(&zaI^GO8eZ|6)G+UIeJsL0QXuqZ_2U}m%B-xbIeb;!NMx@1J9$|p{Q zT#)IKtbcCB@gU<9=pgA3@P_gRf8%^pfMSP|gF+6uMQ}!_!tP|LWwc=QU@T>AKe>t3N8sYPsQn{9kZIi@At}R33X2hP81972ap2_{EY)JyQ#-4x^YLf2c83* z;{X|QS#-&CS?92;)I5A`P;CsJ>@SA*#z?qGY)C{=R#7fd3h7Sisp;?O?&<64r#j_2 zP&%kOL&zLT1N&7AOP5O`fqkm9@H--5oZY9|LY$lzisbQd^ zIA+kI=b{p$GbT$QoBwjBrmeXm*Q)5D8X_yM@I|Ol?I5B&tUUD0d6~n3)!~aniG!|# z=MCIV&W-cUC|o-nJ)9U^6{b1nI0ggdJylLZeLPw`A@!SLq6U(NjiR0ks>-!WiINsK zsa@Z${A+4f16hM` zLu!4eC5>g)%*B+@$xly}i!#bJR)SyLrL5mDKufgd{~d-M0Jm7n8N zyq6^@k&ih-AgmgU5~v=+j%(>tFkCx#J^~LQ5k%Uf+VzLf-DRv)GC}c0W%>n zK^|i|FgXZ5fX7nCvd8L3WKEn%WJ~<2uC0!v9=8y%fV!Z|j=>(qKF_{s?QF$jZF)v_ zCcn(rWZL*pW9$6;IO1G$TH>wrm}t`?U~?l^?4Jv3$htv4LKhP2!Dq39hn=46`vL@9gP<~7e5xg zme2y9gqxAji8NOi>eK`;FWS_zS@g0+djITj$ra&!mKIQ zY+9=1tZeRUURFshlHSR2TYRj9$PC&GdYXMMDnpY(dqabcC5vN@>&&R(n@t=`^x}5E zD1TpG!MKT^ieD_DF5#HSnRrU~bk{rZdVhLjeW*7*jy-NUZu_)G&)Y`n%yhZaO+G2Z zz_Q0usXw5D)XwW8_9m_NMa@L^Kqpa3-I3kYMf<)9|1kYsXL$`zL#k3-Cu5i=buo1^ z&6mr!sjKZA9Ji8bja=^)Wygme^Z z#CpV&27{*5mU&b5SBnOYCYOq_(!6ekqONYQcAQc~F`!ttbKlMKsBz+afxD(PmIvrM za~aTv>MAhbHW$r-&EdpG&Aza{+omxmIvc-$z$U>_)#TPRR=?7Ow8_!BIbS%l02F)` z+83z|4URq{H0J%{p8oon%~$AM_qo}yVYbY%al^k7IzOgz65qTu8fzcJKbZ?oCjBvJyXK* zld;anZ%+me6V^8ShD(F%PkWHH!E0hs{U_wd1)-xJqas;RzNz}KddpgJPZ1|oxsw4| zmlfva9hyyFvp&$C_qR@i5eoq$wzZqB?Bl<&4{3GorLbzUQu&=URiwV={UxU~O zzApAinxN=5N7@P=7b@2yw#_GbCPe^qZzR7*h|w93s%lySZ-#50HBHBojpLpIOzzN{ z(ZX9Q|()x%-nJSnpIfxoGYu6eItG62y z>SmjoT(1NOFO%(a=Z-TSvqs6T>+tsEPf3p4`$orBdnr~Pa`j7m9lPqfT!r*Srg9<; zNViK-2T65v1LVJm>W2+SSA?~Bma=uShh?1OTZ7GCtM5H6{>zI zy4M`d>_@UB^;Wr=te6}dkM3XXDen{N=ni{keB^J*8we@gG<2Q1aMb@0lQxsNmp&YY z8cCzBT<86ItZ%GUq0_4sQSo-VaCF|-y2C@|`gTHxi-Eg*L2^mQ)?wATs66HI+$oWE z4L%$SM0O?ec3WH2TZ~!9S>JyZE&AFVT5EcHY-B5;FZS_d>OV=RM~P64fZv{u=f$nc z;jE1o80$VCz>)B6z9!}H64ql=U6ZM<{W z5dkV<@+;w~{jKz$uTz!=dmBSCMCh!VM3S@M*IwXBzU5_OOibl~jo>?wU)l3fe$PPnvoJUwDG$^;I@+sG- zwA}{l!%>`4uTWo^o*k%6UV4 z3tt@EAXm+_tTNgK<`!E5X`X)8$^S=Y1=Pj{aZ zz!4c%p`k+xLj|IV#c>Au2JiIHH~Tv1lA8s%m>OQ9c02APAI=Jp9}d18=0N(3#TESA zPgkI$snXyOP^o~evh=EXJ!wP*(s{7>oB|($&X$_vY%D5a+SAkyuq<4$pr+7AzI%Rfj8$u^cdLPGEAP}wx-sDxX-?=cWFN{+b=Vn zHsaZTSYlhFpZ-hN&x%-WOM6Pt&RSBtSRq-cSrFpOcm7(Q($~EdvqfxxX4Fzgvy_|K zuoMiRH?0yUY#giSfq}!t@)ky~YUbR!qv4@#Q9(YB?$2M6KK9qjp5hz(KWW5M+EZS% zY-{lxnH}CLardqd^KK5|TH$GaC|5n{aP?HoLP_-3Y5GJIl(6 zS|3$Rt)e>HyDDEE%xSPWv3J@Ev&l3zH*7QudeA@$U_J9Ow zQwJ$$18o+Bo|UeKRN)6PF#^$~0`2p_5oC1+Ew;GLdINt>a8&Nbp+NrW$08@f*$V`% z*+Qd)toVjPE6i91KHS}6fZ_yO8VHrc0K*-G)`Me@Wsk>%Wa^YF$zudp3#;dQv@J`A zq=tMca%T1whzW#8Ae?AZX7bil=Ik9Akl%K*7ixxfz2)>u4HG39N zRA~f9XI~Qd_WNZLpKk3>1=$UR6;hVPZ5megA7?zrDyEy+LnW=npt;KLzv_7`_5%@C zX~0qh>OviD_X{u|F;nz4=&>k`DJj-O)%awt)XGgE0C+!{Xaeh3ON%#MwIB za_8K3X}Vpx**Q~n2M#)zg>i7I2`VtgX4Zut2tP)f9=sgXmi_4f(MQ;cQREw(BN)z< zt{KF0)VJV8Tzyfj9n|kQ8_xAH21Cqy*zGsPxjl+(#ayg-D})o>gN#ntUu8*5plJLM zdm6VHIcapbY~XE!7`i`*Ysgw;q=j&0xrG%;ULZXvyRBO zIy-FJd0U?SSrl8elw{3Rb9CvScj!vL3=rR|c}eE#F-uU(uZRo?tINpC>xuen#HfU; zq)3Pzg+-Qzq^7jCiIK#RNfzFA3nU^}}Rkol?_)~k<6rXQB9 z2bGJ)Y9{UjTM%J4UQClm^v3g*fX@6(qw$VaY)dcrwC*;VW?h73mEVi#2u6*1g& z>yjIda>@%x8)jNl%S`sw4Rz;qgP&~yO=)3t7!?)PgG64wPBj??dG!&eQhLZ2=608M zzpm<%4|TzdlW+sKMf!U?suCqo4H0(1s>nBoIug=;remak&-{||es6Q){USST^$PvM zH5{EBU3FN7MT*sscqLPn=qSKdUR^0$f%RtmkaBUmwbJ4|es|8`+SzK$Xw&|P^^2;3 ztIqkU?cf1${)0$eKuG}4RmWx6b@hJjVfY~p2_I>f=z!|8ce5u*ST^Kr^d%A!`y*(V z30Sr3{?@l5;MTV)1bOx?TVjIuU%xc)aSgvsbPPSAI9I!;^LxF&-06Ro^;nf3yp8{z zVu!Vp)N%v?fk*%A0}7Iwjtv4r3?d~er0NEGmI0qGKmYzA;P{Ja;2R@76SECYj`$A? zTrO!+De81P++ihddDz1sZqz7!izse6-&*n53&eQj=l%q-#0IP zGVgdj@6Qg|S(0%!*{b*~D=wcaS6`MVeHL7+8t(6@sHproNr)kW{7_K9gau(>K>un8 zI+JaECBUPz#`?d$e?Pzo%4D|3`#;bA>Caw4LkTQg@o}25`=_wJ>=?)Y$o`|LOZP@b5;T_{4v{{&(m{_tnoY^fj}r3C|> zW&K61cXE;OxNo{~6R`g)M8_Cxe*Ced77Bn(ukj?Cc=C@?qXgC1oJ!+`RD?c@Cng=s zbHc*?@9Qw291tTN2o=;g92)D{*E3-yVbjVn?KTsTQvXnpT9jZ5BGyUxpnFxLy`vfe zE<+@?LL`cUQ|a0=IU?HM=dBjxM==mV!QG5IFpkM)#>;A?gF{(4Gd2NjdpACUlJdV6 z@k1%TfZ%18bjollxTKb&*^$O&*XYZ>?)qtO;>H}gMH^i;Q;K>_d#2gZgN<4WR&(pWWGOL?#V{#sXqaF>}E_O1ugMj_Yy zuQl;;V-_>&;oqahAMHO^zl%(T@=Z^l%4q%@G5@yW90Zs=BBJggko&n>z8^>eYSL=L zT#-I%yrhE_I3V+T%q7MVRh=h~X6iF)fb&{GnM2>FziWlf-%n+?XMs!Om|E`XM<~;T zL*5v+hC9Qk2srh6w!Og^HX@v1I!|d*N%hS+F@lG*P2r&V#2$6lk))Z^LLQ^`!YgwM@zG+8{SQcK0Ak*A|utQr$|x*GeE zseiXyb2>z1NMKnju=Sbo&>nNKC?$B@sFa{`hBae^*@C)1yM*lbY-E#v_acZ4CsYxi z%&rXskJ0{ttoanbjbz0)JM!5-0(9s{GYU$a?w616%F(c5>m){SimQL)*DwTt(n0ba zOP$%Y^Q4tYcX(ODT-qd(rsbd7;YMe~g&E*{kQa^uFlZQeyW~UyK~qgK+m86&u6HnR0lj>Lu2w*zfbi znU8RLV}8>AJEl}6z>FgyPJ&{ovR(>$Ml`(lo4GaB1tsVSmYpzWa%Oj3d=9ssOLSnaDqUs%>EjKdh)H6YFY+rjZr=HDL5{GFT z)LKeHx0XMywnZp&>)U+4Z@PGUzVqZKCf+LS=@Hgxb&}fu=YnATrN3;Qp2FjL<`owo zwJ8X^IkDrgZ7O4avYMw16d&&_=A@v(3B3z+=~&ZhUW1ZrNlfQT$=D95QyB=OFfbk~ z<{jBmx>;%3@Ho9RlUtW_cX!v`zESwQ+F<-gCHyE*hLZiWvNq+K)*NJrN{=PDnU56* zV4~;mpy0(CSQAg3*MhmS)@uMtnH{YA%w}f|++ZWb_L9<}@%}x^1!YF!`p4D0)$$qK z9d0J#>3>Hy3YbO|2p+rh>4IE7?q;?KU|S8`jZ_$iR(imGL4|)5z)hx{+ozJLM$-ol_|zBt{@tTJeBB{ZWgV3ffZVR*{1<#oc3@%4tydovqF zw9z)=)Z;<;{P_+Q0|Ua>*Y_u=nKmK(o$)~yUts&>LeAA-$JKb#1ez`!l28{S0jh&7 z5yYbHmVL^|%J{^@z;vF3{q>F*v$c$1A?3VOTJXt&SOgZGVwpN!1%P+`urx!ShZy!B z#|9eARP!S@b;#hsh#%9$7`ElMKM!(!!sIda7(Y*f4T5F(#`~=YGNJ+`4)ye)n&#zc zZ|OAc?Vef7Z$(@p+$H?DIYVTSc)9caYHv3jT1-F~@{EZ0xm~M1g#NZqDxJ$2cX?UM zj1S1f+HsB*6!cR__!KOIOU>k>Nk8u@&=pmi0S#3yjkMVue!Odl&mAL$!bfak*%8Lg zicGle!Rf1sy**R&S{#MK&QQ$f)M@21b!=e~5p#V-SO-VPVt|)Xo?4l@*-U=;f_UnQ z)BANoSO%n4rRl>Z;-Lv>iwjB$0ky*;Os$3S<5zTGo zKdX}tHNHT4K>)Ocf?SP_Rc(4j^ulk5jBYX3SK$Sp`Yz(#JwN0nc=vO*-KgMecOaE; zx#!n~S@qtx+W1dGSLNBqF|wYk;yHWV3l3R>Z||OlzS^p9_atTQ z^kuSe%5ZZT?LKXIw2d;u!@>PbOf1Am3}IEOVZ z_q00A-n@iuz6u~Qem4Qp2LYSrQ?z0 z?dB?;z>uVr49!}6YZ5|Cm)_O6&-8er%=fzn^kt! z)tNbS&s(#UluK%66Yc$-*2Z8Mo8)M}+_)<)v6mb#uWfxdG*rM1N+do6)WHtN%y@*g zgfY9Lwu!tv((kJ0RI|O|Tv3572}w6__=#9xGndYOSF1fNtQDqk--J;0HZ|ux zou1Ymrb)C1BnA68xuFT>v%)Jh;W55n#Ro3H)@O9!^B0BGF#%7A2m$?I_J<*Yd4!_-eZEir0`egLVc5_s9~hc{IB*oN+g^Ld!LcH=o*jG z8j8`i!cJ}Bii*&JdVk%MKPKP@Dm-IVg!3mM^;XdjzmnQ})A<_trbS1@7d>`Uq$j$+ zzq&JPl1^0{h*)kod78y<4|sZMh7uf>=(aV^GL!$&?p8X8F3+*W>iLGm zPvAGp$LKe3bv{=Xy+(GTv*AI>M?BXW(Xag6J7%!@Ua z63BnDXID|r!WS46&yc!Xk}E*)N63>u5%e~-}|JQlmS<#PgO|@1+a*} zQ48d(G!oBpR&8a;0;LKZkU#`-<)y%{Kd@+PdrjqUq0yCXkseEU5ovK8I+ULrzXr^r z1@%Nb`Qb@D484Q9fcKP-wc>1Mo40ARvZx?~I$QKc-?u(O%$n|hl&L4`yP-;hect+n z2BM#;WWI5M?=$|GID&7ip8jR`jU^@~CY7mobbaWm-sZ7LD__QF$}W9>1lw37#MFH4 zZqqzC_IFs)#U}4Z#3f9BNJ?icSL7$4?JN($j~HzG&63w%;OY>$aVMN7RX9zAia!cK z1#S1S=}AmHiHxcgZ~R2)^)gyvhPNGBUJieCcb8+Syu3+7KHBm#gyq<&16U>lg>IKx zX?}01xnMw>$p#1iApslKowbn+@F6%=;zZVe-^4hx;)BVMuj<<5-+E~3{{}2iVj|1D z7q+Mb@m!=En62Zl?!O$UZ_4T+s99Lfs%Q8hdVe=mLFgbMKrf^d9V5~cO_F2SCN?MX z+NUD>m?5?)w+~L8D=>h`-{nrc2?ljc_ty<@?ZbX3Z$^pO!iy;W=v_ zB-}1#ZP}TQ6^xmdODk(~$%5q-%x!qYi z34Q87==!FyAHnb!rJ|JUdIt8z3YIA;d2LgaCwIoEzK6BG2Zvn&!NU*aqoW8e z_~C5xDGbmix!w)b*(viQQ3NYI|DkM|Ijp#W2+4o#DqfPVUm(2f8X*XWN*Zc}1g8Xe zG}0P4OnP{XR-RMInpq0^5+&7xP;w@_JBWeALd?2@gkc|E)wv9$1)SykdPqQ7~hY6?~pRfs#*#M3ondAXNp=`x3$ z%#nT$k0fXRd1ODCN<;s6!@>*iEd27T7dDuo92SDd{!wNyf*>_APz@zsncA@gd zT#Vn#`pbuP8G`l0WREW1|B~y^QYY#`7O)!-9n-&svG}x?z4x4X6lzqyR7(Vl?AjG= zWJGMwUimP3@FH+!JB`e56oPn+9tt42Z_CTOm-#n5iiEeI8e88N*Mo`2uR=w}F z?NZ}2N%_aS#@cchG|g~wc*YgKxQlgAgnN?Rp^ERoR=nH-@C%buTC^`c+Vy*4irHya zL_mO-PU$L=oa9QaE*`7xLA2M(pyuB6B&jjlznQ%_*fUe>bn!N;@!An0b|)uZMjZ{) z>B%kbZA)a*Vm1?2DXtap&Lh1Li4P;Oq?vz=xd|EaD%u)$bQ@hT@L3R|Vm_)^guyB2 z^ID?~PbfkPe0|mdSjQUhI~MJ663S98ES&CIDNXq-esFy~Sc5sMV6++(9o?*n85qo` zrfR=P5&>mLgN+gY4PSIhTmHwv^h|Fh%S3_FyS3{bpJESg;73SN%k5j=*U~U>s zd0zE`icNW%bn1l<%;M_KY!AUVjdz}k@DvpVT+cIq%#d{0x!yf%$mq15!B+KE? zjpU^G7<&w9j+CJSSvLeK?XZvjo#|?j^VXr3-Oph5ymafS+VSQckdo1hMe9H6HIdA4 zRl{ZvTSNrkseGN9Bfk9X6bMQ8)SfD5AKrb*jv+@pT;lw$kqo&&KfxV3Cfgbn@o%^O z17&JpU)7Jx(R7;t|w*M0tP(YObqPVWfn5v=Mw4>?@uGd#8_tB;| z&U?!E?C;y|mlBt_&3Ms!luV4VKWieA))wyxYVH(N-;S)JzY*N&%Lfo|O5MDK@;hpHC)qUA5tgedQ{Au^A9kD%Byu!mz|5(ml9$~kq@Q&YcRHbl|V z=>HC&+sU&B4$>8H7*9S04_=%_@)yyh6bgO--BmRU60Vn_u8o#cB%tI{W@O-1MF5?8 z5wnrU(uH17#t1JbrgT8a(rSf6dCCo6lwXifIZWs7(+IfQ^o4Xnh6RGp?z@MYU$;IQ7do&oRcpc3`ByNEcfAa|K9? znA4}4^$bdSht5cVezyDX2+c#*vD4c(azlQvnp-mzfa_z$^0Mp{c&~DJBt#_3vrGMwbOGP zS3PGPj>VdDp%AytW6~K|bpq%arvtx!8*yKfW#PQFwe`c2^{1^J=Dcz87rvVXq!;&^twI=*j(q=Gm2h@C#2jaa zw{e(VvM(FZ&`W-|`G(4D@sN?nyLCpzSevc=Ri7|WeACQyz9#DZ8=toh(ZcVTng3!T zdpP&2=iNmoJcX-QC~>M>_+AG~dsYbhyk#9_yF_qg!0nT}WFFwHbKO=P>kWka0%$)g z-Dc%c1h9>Owm<2^eUw-beoJgONlz9O1H zfjnPlZm^i2VgI1X6CaGTlE7?3HOlntx`=+xK4P5(i$H|05`qf;#6KVXQ+CGmpAZ_lYP=5MvV{z(Zr2HO0fIdR?$moh z2yrPojVkqPT7OLqEr^2ys7lqT(T2O%+#9AF>wob~2S4 z#pfsV@{cazcy}@t8L1=2eeAQDEx{Dk zd;}xuA4Czl%-YtA$Z;r zDWJu(J1!ot=5!cKBfuhN?~<`N(+N+tFN?z=k^SGN*Foa^ID*Eg&8px0Q|n5`m}QdoqbG*zV(=#}%c%-a^Sq}u&Dnm~d$v385ARwNy zGZakmHBa>7GKkWyGrO$jKHEk*=vC!Da-L`s8l5B?R&pPHmX9Gq{v_|}t zLVlFh@I3^~CZP7(=hYzvjh-}*YLw#JBBm;*WQYO@3^C^w4K;~0+~b)Hqs#pHY1$m6 zlMqo&<&QaKI7SkDj1z~QiyacGsupDn6_Tp|vT61K3Z>9N3ovz-;5htGhY1=bi+GU@ zbzX>PIniZVGqVw=T-E3?HJ}&MCBb|u*;#ZL$REnb#cDU2NLOY@Q2_FXPX6`oziV$J za(;ssf5j@{_Oz3br^fiEgUkt`yB;Fq1vTx$6XznJZtJO)P?!rZYg{h0vqT;;QN0sL z8<AA_C8*0L$NdqyLA5@zvOZP( zzjNFnes%V(dJ}YiC3_nbi4Ln-ie}<3Whdz$2C{2RnPEB0rc!h;b7qz`LM_l=sCAG3 z6$1aC>Vvux$h!<3cCmE<>n-FL17{O68N(eX85YSJDe07DP*nOQ_BzAA)m(0faB7^e z%ulcJ|76-XP!-V;pPBfQzTpp+HR~w^s{yDhy~r7we7O*zZ1OvE2CAhs9DdUTde=j; zy#KNLA7_C1C7USiv{$E^f5Kot(!g8iSoMd#UZ6Oez-^Z%XB1CI2UY1SgDSa@xa0K-qMH?7@8ksIDtIB~3 z6Z180^2H|A{pnF^d>1YeL${K`x{)=uvE<4fk4@}@X72QP8i)S@)t?eHy#Od1{o;#G z*^jd7jo-9r!G3?Opf^KqXC~WTtxhVnQ-peXNf1+m|FnehCm z_Vqi}m!&(?p#UdAH+LBZDcnE@B$}2Rz%klC>XyP=BdChI4*PhP>JIk+`Qdn5*($rW z)le|E6_mV8rb=7Rq7(uTf~M{CNT)rF7PVQ7fZh`l-myuRed@x5xD-(Mhgks_=bqjt zRaD3S+y$^}@W`>1AZy5LpNO@`=jmJx&!b@W%O)nyreATsh{Q9@tJ2;aS^YHpf0onn z0ZRmeKVDnWIaw3wQY92ve+@}tDazZp)G$~9uOUp*T0XyO-YF|HV>fZ-m|&P@OL4xl z*HtdbF7nX+VvC6DE%!Wd+Ur5!o$MT+d2@F>P_4I_Y!Y_(ZGVV|Y1dEaj0~5@08$-b zaY@!d9Z{0i>$&ud6J5ZAMN;|NDEh=>A=MAxgwP{i5hPl^6cc%`*Yp|sD^`0@eoNW- zDyjhf<)j;yZr<<^>i^9d1{5HO#6Cvgcc`u~urQYcQ^lCDtI7MFoBdv<=av1ggR-J_ zbz5v+Lt=i`z6E#JGp`B(e$AKgzoDL?PE{5BOPn&8K!0ap3Wf7H-wJZUbTmyhq`qn+ZFAv@*)>@^6k ziRobY#5?>5UB|&O3#pnQ{Z#$?uUGZ;|))BggH`-^RF*&vEAd z+wl%^wa4kC_9$s;gU}>D__bh`O&F_<&oEb1gN#6*L|M}gn7M=~tH^4mH{+GRUKoHi zO&LyXAm?{+#S2y4%Qt{!YXI-EJMS|z346QKc2X08_F}zn|1r;X)%=SY1A^EwlBDVb z^wjG4dX#88ut$-#33Ha$1UGSqGGuIj6u#PiQ>rx%4gS}T)2V5;RN8L$;0x)T^Jn)z>27-MVjNp6Lk_A083C=eKrd=VI?D8 z>m8d7uRQ2lcXEi|6MO7vjm67ox+R%9&lM4U@Wm2~_h)2FRBXf4{W)ID>jr1}iyK1f zD%7(1DpvL)OyGe(_)@1m+d(G_5}qW-N};9HYQS_ytkr&5k5tl#uB=#ltpyEX7+WQp zE+Aj%S&On&zs8#}1*j~icuz$R$%c2{Vu3TlLfIrY}jXekfceVNLtkYSt#yk1izex)* zHC_LDJF>;4Fhn6>Y35L|RSjb`3Q+cGcW#CbyI)+%I9}*rX@WeC$x8fq@<-W$BZ<2Q zuQGc(fUsR7?9|aAGh_W09!txbcjWlMYrm)eKbMY*b0Cgf>NPHwG>Br~A=-I586Fc& z$EKu`>s+}qJuO*67{Vk-hbyChf!F9=tll*e=&`jvQK}WS2MDf13Z`EXaYIGn6N(Ty0V97cwNKNuZjZl zuIzdoBLMr0x|H%YTC1kI(TrcuCI}XR{Jn-X9yRl+noYad&jWLVAL?Z>?zGR&(M-qs zyzkFNo$4YKl(@(Wk1XeSQnl6!JmK)KTmI=f5}kmTtIdQ_MM)?rKjS2ksJK@zFr8Pq zaYQBM9U8Y{%lJZc99N>miK++{e46sW#Mk;jWqK^|%T}pX4loP3qOU6;Wfk5f*0ZCX zI_H!PMv>IBI7U)bR7c}=+BP~)(br40g*@u?dcvNfN4ej35+?~F_Dv5AAK+mdeNrji z$xcH1(kj}Va&1qfLb`P{Kl#P9d)BK9$GP+=9F|9HI)RO-WikhRC+yl-59f3@Bf5W2 z4`Hi!JssLmrPZ_EF!ctgXp9Z^-X9u#O1kx$PogyV4_%$l67;WtchX<_yjVMWX*Ss9 z)ZW(lS^P_5&#-OM7S}V5ymSk|#CqcQ-&Ip$o6Z?&M2r$dwpQ58%uK}>JuC3KvG)h) z1W0x-%)Bb04#T6f>y~LnUir)_HYb!R;CM0AmtT)J-m89PPI+^WGI{@?w?NJm6qjcT znAEG6LGyH)LR{-bNt(j5zgIQPM#NokL}-hcYZ|FE=`ITB)0+E6W3R4ztey`TChnKSUn`|C zEbYA&*uQZ*F}~akOJiGZ${`!_a9a7*vc&Q-7~%YQ(j_efYN+)I+xoMopFBZ$FVoWi zR3o{p5KJj1h&;m>y(q{&-H3~;m;mR|pi~9vRgm6$Pv}VREdfFgJ)worl9#>DIs2Y_|L=!9U$WNvWtC@U zjycC1D{F$<(vI$;c;Z8uaus_*9@ARBVx_nIVzQ9!B25rvWw}Bk37ziTIoGhdAD?(* zzyAEu@nf?aO7IbwsAoO+<@>We9wyK;+hD*Bb1*Acit7{oZiwV9^Zd&nqjWR1r?(&6 zA|AQ-jbX!%zH3)3X5o{n*SR5F=g?cH6H_cZq)xkF@wMcqF6Vs3UDq=PtUiSff!jh{ zIqg+NVwJhj-35k#ms3urd*8e2**qn((ge$1oIi^nhtL&?M?x;0^YZ*ety4aKzM(8> zwIKH7xBqvUN0r|FvE3}>41}CMH_avO2PSW%Ez2Zb5AHsrbS&$NE}J(^05QH8KHYL% z%6jov1o^KOvZf}v8~wWaGRk9cZ@XryNmFjzzT|KYS^MqM&geOVpimF+4J_0pD4ZH{ zmf7=tzfZtcyPSL_Z+owDd>!|(8oX*w3aB1iR&guJqm+5GBtf>PNr{BMB6BY>SEh^d z1R=70#;2-}Q9?r zW<)JVBy37(UwVUQTN15=R~^h#Xr=_!K=N4+yMWJ*x4te>8_Np&(!4)gGQv&Ibwxq5 z?>zM;d^e%?c>63}KX;dw??8JXWr933K0={#63A)v_F+UC?wDjufMKaUeHe4$-p|BE zhPklUO+TE}_!0ac<9vmF-yf2AOT`pggLyFJEoK$-t-}cA(M`7FrrANj_Zx50`9CHE z1yv+UH#gOCa#kW-e7AHf!QJMk5&Mlw^afSW2brC~Hma7w5!rfKW_|hkk~ieYs3~H5 zj)lPRWY6{X5i+Br%9g@D1#4#zp@jL_rq2h_0!s>W3EFp^SsHUgmY(>t50574Sv*z=jHb0 zU+lk36ib{Y7Bh5!xhAH{YY7Y45Q8q z@^>}D%Nr$ym zf5dHuH-6=RvCEL9sQLq+7Xz+XylQYp3|UrLb!6M(EAU zCSt$#1{Hpr%L4@UeIJtluR4OiU+`9~zk`IIJx)el zzfsUnWa)aj81~Mh1Y3s9F59|8!`x?f9#^o|om*Ckywa}*Z5R7+H4bzjFq^29il;sm zE$6Yffn1IQGg=>78$0`=h2jemW{MtYNxxtmw3y%wDhM(9W7S>jB`I#HgB5zO4L2Lx zEB|BLIkr?ldY4q`0n=o!E3?G_;KrT;+tu0g)d{r&n}@?;a352?V!!b3d9 zoNaMIBsQ?p%vtW$MQTp(tAKzWls)-Ik;mVJuE+l}Tj_uGq9xdWx`fX)YI!Nfq_|`x1TLIE-2J z(Wfv?6_p4jqkG%{v%(nV>7x+|;E2QyK!&I8H(g>mukS*ofD(^Uvf|ZeozrOb_2OMB z49>6Ry5kS_zpcjPm)0vLs2#z45U}@PRAznN3wgZ7vN_iv;0N|$a3Azc;5KUCn{R5_ z%5>Sks}rYDI*WAiO1!+F>I@|{=r+0+!%bXDOC)MiM*FGYirNyGEZ1sYF%tQ1p-M$O z!V?rW=^lN=KWQJAyWA%{u5Gt>urY2Fm)&Q9Gy%Fo6$F5zGp1;S%<zW<_=^fmic=+JxTF5%w!mosjy?u0E+@-?!wgg~TYbTQ4{oyJ_?St}{|8%KX&j;V-a8RVGHs{k$a_0{l>MkTYJ88;pIo&R09x1f*ni!RdA$ofU0@)*X z$eZgGK~>(kyuooad$pG1LfSuw`D_dS+V-x7?`gz*Iz1XgM~| zKNGZat%T?#7y0euk#VCA8!|K!JU*J21OxjdRD3B^$xdAv8rwPE<`*5GESL#W)``m| z6KeW=n@Bt4c44V@nCJH3n<@g*@g4Do%}2E*0vzKuh31WIa=T&ap-)c zz|G?OpC6?;y*3mu*}KIPU~9(0{RA^Eoe*xMg7FvUD?` zhJHd8nSva>ob2!aoh7==$Z0;2{mU5`S`Dg*|Z?>+JPBjQb!^ntr6 zyod7ps8+<+ukXcKs<8P&4B#oQXm{;UKGm*B!ifLsm|g44-k9372e>i8nfB1b&3)&Fh@L^2@ zI<_prEODMa_H$T_eW2OsSGa&9y%?^-9>=lLl8RfP{!23DB z?a0UH_wxNoE7b`!N)+ibbCJ^)=p+-DoexhoulM-(Ufc4NAAeu8^!uUZc^*9T%2@7= z9XEED_Z9iY4Y^85EVcXG4gWmK4`rb6KO@(y%X^yZB_2s*5NJb@8^1mhAd+fM(K8}i zA?f4{x@EFU0A!?Peg2&Mct8G;{(>UkAl2E*orxza<;E|@d3GZlxzo0AI}r!TR5U@k ztbSo*xBpq_)}I0Ns|7>_n#+N9wqPOl*Y}(dCM6zvp)ob8yV6F@nU#x3X;_$nU3p|; z1MVd73oY&dMT_aw!6ipzMY^ZAs+#?L3B0vlq8GAH3TqwNpDHGW=mv-CkCEV~;=Sz# zQgo}fsptgLs^!6H*f0m8n%@!G%Ic?Al}WyI{VlHPtJ-3PQrc3(^0-$U0l}rJ0Z+Hb z1PI^ZBrjhzlF5IN+#Y)YyN2a4?LlRjhq4EQVXuEqI7hNVV2gh$1ils-1hZ5>E3rzk z##GTM_;*izh|-su9r(?yR~V`12`{8YlOG=LS8zvrOrS)Vb#vjl>Seu4nt6t*d-+GI z|Kz3Wu_TyQHKy(bRQg&dMcz_s*X@$)CBDje&(Ors3;GQolN)`*{rSFG5F>kbN>+o; z`P+UEBfi7Q-{QFMrzjN`e3f&Z+M+2`#Ewj;~A%ga7adaq-xOjpU$BIYn&2zu2ZbZoF;jUlb*cVLIK>zA%H^{Q1S( z!v%9{6^NDyB3I(npX=%QOc?OJUREk*8lC`1Ev$@O+unA2$n7j;pL9fZ<1X>7M9Sw4 z4*vdAn5sI-->x=uQ>=GUkcFt4BB?GKB$Mp>3Gz1^GU|#JH1{K?G*a0fRPYHU#b*jr z_3@V%{M_$Dzz){6$QJ=4N3mg=u;k@O3$*f4%*#~tjw>#v;!@|9HBoX@(DMT&&9Jff z!Y}eb8NYsbIU^z}V`z-@RnXIsh^dUU^HYNz<(1h|j(&xr@-Teta~tiWpdZ%%2`N)u zf5_Gvr1eThTZ(7AB1De&@#(XVT`H{sFo}>Hf7c1&Rp%niS(R6i*Q_O?QyOnUtbfr# z->?)-y1%t3lpiiM1H}+8D?KxnqEp&&A{@GLW(sCxc;~%gLIk91<#Qdu6ux^B;{13I}4<4K3@LIA|*xPzNr=kJf z42^N4MvaUW_UJ02Dm}pSm1cHWOocP+cwW=p1h%p!iM_EwxK_GEA>)vJJW?h1p#HEw zcG?KwwQ23ht`4YjE6h?MOD@C}yh-^lyu-5i>2aR$t<=q%!QIQ7c}m%?B$Pmo1y1d} zs__1aG1lCk%`QfyX@u7~@OOqV;zX*!_aq6eOlHkUeA}O~y zt-LJ@6O(8un6VNMs$431Okk^iY#e1H38p(M&$DV|A1)@d;nx;E@8;JAv_!?cG|5of zED&r#tEltXfd6U)<$O4W(r)xks*s2)W5t<|Oa!ZIoIU<${S)smdR1crkRs&*TELtY z_Cei`J|6RHu5rfcCnGLC5*wb{rCSN&OkSJm@hc^O?WRJ6c5-3=hC5)%{I}-uiuuTg z%i%Zr|A`RFko=5o%~A;OORBQAIme%)?SZ%ZXT_H^)m(H$Q?B6K>5cFIQ_&yTFZcMW z%J<-b;o!T-Z{G^mCF>;yX}A+Yx8q*a>{v*b%9m({{+B=guMNw*Px4h(>kd^8$v^h? z-#nsHiYvu~QVOpE?SKBr{{?RXl^;L8rTSdv=hJ`ooakSj>&1vWGaJO_az6gw!Po-> zXa(c0X@va`Li$(d#VxA*C((|zru{K>rHS=$h^OIKn(B zv~F>J8XxsD^0r`FXB#!fdyL8>a{WWmp}f*&yBp&>V-Ssv!9oxprB_gmwOWo4mp8eR zGi}tb`K;Zo`&8Gp(`8(5T@iY3mJREY;p015DZ0_26g`*o=8HNv8B7L{?q@?fUA5Y> zhGWm3xD4LMY}K{IywHXp7l@E^XvMG4QreSoGe_=kB!-U8@m=GyHB7SAI8%EDJC!_B zr~i^zG#Ae?Zc&iKelP!tfS|%3$#VuZJeGm`0!Y%^+Y5Kys3XPg*2Ris#1-+WBWthK z%_Ycps|cv12{RuWCj}I*x$_lITg;?dwHx$?CY-W>i@wHCYFN77QAC`@0|>< zSXQd6?7S2BN$&A&d$yBSU4Cn)B#GOHsNps)y?#EcPHyO&DDmTxc&K5BT((}tvhb*kv{Hp6lepYKp<9lw;j+fdt>xp=~Z#F>3mmnBo zF&RZeRiygoS*F)=r1wR<8Ewh|ITn8`*1V}^qyKtSyiJ~W0^2Z5d%(S?%tU$ar$S71 z?}Hqb4$R#^-w<$Jv_fNy6zV^lvqJC9qANit~^V8Ug zCh@^PD6UHBUs;AIMng$%*5*U3g-|0DoNTATC$SFQ5vnhnIq-r$yvsrEKb8X3pip*$ zM3n#8bMjom%fyCflkzv-AR6wk!0VJiyR-pyQ+vM@?5cTpan>q~C+zVhh5MHT->|5>R;kJQ%* zv4kGLUVXYIq`9|wL(yWF$X>KD_k0k0vgM&fVgeDw1^c%ol^TJp`?4}P7o&d4I#`Ir6r3Ux(S z?e!e~?kD>GY|yah?~H3AHQ*KteUdMP?6Rt$$@yV#NIoRWM5aoWFR%oFFgq$cf~s0lF3Zre`ZMd~+l8^j*SoyA2`qWp&=|{c1s{&2y2{+5SYS z9V?H8vktr-vzZKLoQVE0M_08b~(xXeCZHJRCa3H#-0JzLcpkt0zb|KS?KmAmIPyr;wFxU%<6j(Ot*AYo2@0;+<7~ z-Jn(K2ZMw>ceb@#mS#6hfc`;}dP^^=?}UeiQH^CXEt|Ky+9Ty7b_D?H!p%g?61rdW zVr{ki>c4CNRB7gv=|cs3^YCMCXOl&tE0>IlLm#y{FVqVE2KG!mRW4PNl`rV z{RYmj)3W@C>l{j~csR2HQ+KHoVP?1JWFap~Cz-V#Irm)9t&9eJym&C}OFT|PxP2-} zB7w>9Do=~3yn+j|j3(RWtma!GlZns^1F~KCbVc*fjL0`qBK14CS3RWSQ@{HA{4I{d z8famZ;(xLZSkN3SYed;A1wJIy)uc(iiY>U0l=M`mA zzd5NfdpPJKB8X3p&1`64%{$6E=(Z{lva5OQ?FJSrA2@ZcZyZuJs<=T}$74U>BH7#w zK0T^{f1=jrIsX=`^H?-j@^kV@ccV|osLch*T&l{QeQHcsqSI7LQ=A}$#&NFS{`E#h zjp9?2A8wYSF~)?u(ZjWF=1g>DFEp1;US4l}(iK;Dur;9tQ{X7XfyN`(+UR!p)+ zhi|0)$Vs=%MUxKhpLLlpx4Y^}n%|9g*bY!64B&U{MDNw+DY^B{0RuE$=f z;`!}7^}QZ8XUY!4M)z5;694D4^iaB)Dl75JuL~=QOvm=0)%Gt21-$%vu3)Wu3XGbI zp-@1A%-5ek$rjk4h0?Ed>Q{ z=9}(H061!1lul^L+J61WUiy-SaG`Pcnc2KCw*`-;mY2m~`{^6H*!ML;pA1qs2t`i< z-KCqq8GBLm01&_juuNY09*?fXQLO@DJ-FTGg~SCDygK?hhcQ=(={1x~ME9K|KQgzE zqPwv*Vpb9F2Yiz5z;pc_&GPod+pPUxqMTcvyjNzu_m|&v?VbzaJR{QDZ&%FMxTpUw zp30?86)%0hI1H#K@Do1>1cKfC)5f*YoVKulWDZ6XLaFtD%hnOyJ6nyWN$n|-&X0`9 zyqc!!jBl~WPn{DQw(R44%OhI4?q6vseflk%&COb!*}r#@eA0fg)VlTZ2CrkUHKY2l z%-OzV^~(mDn78%^iRmQAGCh|@UmhRf$2A@4A_|-HA18eNwYdEr((TF#I`!c%vHcqF zsZrp)D!l7PxtX)r;R*UKC)d9suCoNaXHl{9rdH`x;Vnr$3)TE4pmPji6Vi-%gk>C- zQBz|bqj2bGPRP}o3ON$wYn}9&DPBpdo-)0)@QdMg{IZHK&A5t~#V@+&_%_d%)l3Au z10}!vM%rB-@=@sRXC8X2c`2gXJ9)3xrh|GmuEdt~uPpuRMg6OH8tw0pfE-=36I(FK zP@d){rEu2!jIvElKf*YYc)9Mnbx-Y_t!}|Liy2!|ZN5Ne@y}}=XFqc_S{$yY{mI-m zafMs!JJr(eR}(vKH;PVVG$@g%zR&TO4Ga;1o4*ts= z+aIdSrhHdnRG8F&Mx8C6s85-6w0)6eoUbl>`!((x&xDdnZS6VcKA+cNkTE_-r5IvaUpb_8Weu6#nHo>CIpGpum% zHE-nD1jhDuv)A5cAA_Z|m`p|T1^`}^<3vkd_ySw~n&HCT^gjr%GqZ@FHjQ??Fm5}P z%QgL@D0J+|4dm6FlC%NqC5IpKlBqwoYIlA^FD)Zrxlxl^NUV=k6@D1A%oi{8ojd*Y z%gd11C3RTvs$n|fHsmq+idV2x>X;X)S>ycAx{PiG=PL(ta+vb$Unf|_PS!Ito$gJtefYPf8GLi{)$zDDtj z>%kR$+S+1G%VM)VIXD4e7wrPW>WUq6kR?eG+dI!kO8sR(wV5+z-%xI^r2wuA+@`i; zG~W$6zLUgVwpmEE|3&8ceaw}Xo2z~*rKmwx(lGzZ(mQ@B-O_g745dp(9Vvznj5Zlo zTkj8m1qB7@@6DP?HUgjsF~38RF8eMo^%I?f^@8Bh1lQn4L;jHdGg1FS}x~bwG!p`T}}{A zy}!Z1vkFHBM$x699RCa>qo&kDE)dwwbJxRI&Fc3DKgJk$Q#vO=`IiNhFr_Ld%C_cB z;wC!i)9&PU(Wk&G`xjs=en1>o6CL%=1Cu3ZO!JE(ibM3AbNZZdirK+0UnF#p;=a9G zle$p2R`wV2Q2U|NFJD-~D0GIXnRHJ3b8n6=4nZZORfOqB;+Tfx2Cbj&lZOAsrab$4 z<>k>6iJ4?)8^y10Ns!&mbN_H2wwAd_{LnqyqRmtH_n}fm6Z^Q2#Rb))?vvO5@^=iW zuVw{!0Qh3d)^S5;nj2LU-y#)<7DF}P8rEXBU~E7CruI0)iTR6y;wB)=bRn#0TIUe^ zwR-*j;_SV@i(&%%jW0EcFMdS)SyXe?c_J^sPNYyU+!xI&jqCr^OH51r zg{x1sWUl>Z@PEVVt-rJZx6WtZ_W#4o{~K3dP37u~t7%aEztg~!K~=q~{g&FlQ^f>jcZl$`V1&Hrb-LW6(c(^5r$IlH*14GNtx9cbY#K zWRrNGOBPb3mEF6gy3!qakD5AYadC00)e!!IxRfOD;=<3;($d>7!7o}u@p;%^#LMT` z-He))7jxkB3atpVhUbP~B(LrD>({9sJowEtNz_=aL6Ue+1acvAae2A4y!5>8`ekd(0_T#moSe3}_8uaskzS%zs%PHpJYngMhr2)#da(cCcT# z5`e;;RXMv#l|S*tZiO^XRv)6Gce?_$8c0Y=f~-prS%K3<_YW)l$LamfVBqrAHKKbJ z8<&`%4WN-@2VMLZqYTK`lWC{6SwrQ!CD8yc%FabuNsZ}Dy~C{2nWjyoZq3;{#>}D6 z5Fxpf+qah5q>N1SK6n5SLVl6sHv_-!E|5Ah%&5KaOb=X@d}}OBikSKV=<473nk^|C z$knt`8iiN$xUNyBz~SKtVoDpI%RLs+Y^_dtDm#6}9&OPj%-@SC66;T&Q?LOp4Ngxj zhl~y{m2MZaMJ5&VOZ8s}^tc>-0JIwzMsL99;{6muH?ns2gq=i_B34C*x>+6(K04jQc8% z>dS?dTl+Es#?->`GfA^OzrP;pVqA12s(d6MK5xMp1D33MEsr!n__5dal{6e%4PZg3)c~(TE{|s!B=8lS)H(?STQW z?HWL@kSY~zrF5A8kNL!J49UTG*ST6r?*nXJIahxy@R3=U0EGqX6T3%JxJA#SI;*tP z_lyfOp6TWaxT9eTi(JBQ|K*}IgZ;L5a*oM|`Ap1Xk|)U6ORx5UEiYBmdWQYmMH9gkQAMkmk!b%JgBfe4a84Ar2_kdHW4%0FP>N@Y~pK zgp|dy1p0|zy)fx~x-a!xp&j)hW5-LfF`-4Pl*p8$Q9}*#u6#J3DSS zK02xRb%w15{l{iWhGB~BPXeXN?wh!CRNI4uh{Q-EHFW^bkR)YN(s2R%(Yye_x`ZZ) zDu0=H&XBawdppPHb!OjR>ZvChn98t((D^S{qJ2xHW;_MU;(fzYIbEttGt z6gOO0=nDEI)=0otce6K{H493?P^uxwy`m`H$#g&K`$Dty?ht~Qg!m#i`?Nl4qu1Hg zAlcROXVfb!aN$dDI20&~0Zw|2hm6gG_81OVEm}8bac8s!)Oxt1H5)$PBi;ey3S@i@ z3F49JlqHXU{WQCKGP1f>vpw5DSbs&1#=QUB*@pHqUvI@6^P@HV&Mb zgc(!RzkVbE03X>E_aU;$1x5P>?EU3OD~2&Th-(dm;@DgVIs4&jqy%{Q%TUz2%%}vo`xXs|s%{N)A1CX;od%@UV)g(i>jn ztqdGcMg5OIO2~o|ysq;|i{3kor_DY7sqZ2#A(UQ%dG5X0Vx+9!$AfM_#po5#i!56q zg_$_CK5KuEwrCO>J@&lzX!m!Ly7T#7u+mh8k#3z6laQmheBGm~&}rCxm&19WFGMHP z*lYSayZ+GOT})i@G#QbeTdvgBMGNh{$+!?op*kB%Aq0!iY*Lx4b1b69N+8*C*!nl7 zVp%8kV##Mh>V(BQ7qcOBQ@~NLS}(9ueTR=?=a&_)%{IE@JUV1??fWBdjSOW0F7+5Z zULDeAf09C8@6o4_hgt7Tio!aihoaS5z9K3BKX%U$4+}VEI(Acih+z+)Aur-8PZcEO zy|UsE0_Fl-Jcuw=buX=_q3B%nD21wh{st9msA1VktK&?Nx+b(uhpxyr2|@Yh?XNz{ zg$Op=@A`EcwDD1iZ&z*ePg{|;%N?Hhbf=%bZ<2RopNuMHW8u;u$FV8#v%ESzJ!J}ahC^$Qigh^7?-P~(~S;( zv`|IP?ob-jEjZpq4LD1hlY+9*EMGj&4wl^s^&80jhJ=WHfAJ(PELnr`$z_7Rwt6s{ zL(&E5Jj3R!+pMD$iGynmI-wiKfD-1#I2}H*!mxM z4WllMniF=OgVL_9bLn{HpeITCK^s^BJ~~0VJhS` zP6WbtWdn8UefF)M%uz9)UO3wER*h3goHn=kZTX1TOW%=qLY&?K<&M9L;;4lO@krZe zC|e|4nux%0WcY7otZ3hXJ^W8e2FTdSm(!*(BU~7`15L=X8a6Virtvcd#rQBaE>UCU zhf?k^ok;5E*+kC~z6mBK)qpynE#5fOL#CJ@f6oE##x3dREEMz3{?r>ge>&ouXJ81( zDo7Z}m_f#k_v#QYy?b?~(@g2?y0C7~?zHpSdwSg9Y!}M&Ye@T78v-{NWs9xEC>&4i z7SC39aYJ$Dh)TYzn*x&!;KLu&Y;=D2tXJek)t3II$XSP)n4xT>8*9v6k<3ZbhM%0# z4Q2_BNa#FpXXc00g0s3+I!xHGzV?)2@t~?s`1*^KmafvqHzqkq)9HC1P~|0+so(-- z(!4Wsv%_1Gg^el!6oMX)^U?aQ-o8~4&dFEgxhgTw|)29=6 zcAl4|Ek@tu@r_CG3#>%}v0@2T;wIuaSwxL}!Y&z7))Bl@X(XOt+|k(Z2qQ5Zn0q%c zLgqqDHn%`ufsn#*$w@dcJb>@*a7o+iI3A~@kz?H{=ghsFrq9_(g$Rp*mejYM$}{la zU^N2m+iiA{lDIsR3j5e$!7ox(z|orw4wGSC2!FB@i6yDNg>x47TI(+MCQA?r<5+Z( z#7VS?U9mH^dwcibsPwdQej2eO1>0Bt9IeX4lgYt(sTffrBCy%K$0Tj1F69yh#(FVV zWRNk7H=$a8SuQM@%m=YDEI3Ph4R%F(@s^%`iJmQ+Z;+fD;L=^Wc^n^=c5-Tqvxx1p;PS63!vlE#C) zSocMY95kzJU8cd}*NTs8KcY*6LtfFCFc`n7Z!10aGH!P}Pn)i3?vI^dC2%vUO7kBN zc4epQpjzr6i?OwY@!Rxhytfax->QqVFTl|6)cCN6hsnPia2hLJiIl_`EUj3D?o45v z+Dn9kMJ3KYgCC@A50eJpS|1}a z6Sv9~$i-a*pRf&$z|}HfGb}n6V4H zWM~*Zj$MM9Yc0{}gij9~HqV5_yIpTdr@l51Jp2zAV6B!Pu2FNx_9B`LTlcK3m0>z# z)^M;=z+`+tn1685eCiPtf9$di>%#`~a3O@DW~gRtM7}dF{mlxsVz{sZQX;N--fb%- zd_F!;`V(lXu0*fc&?mQr?d+@pj)iQf0i@~!h2GEYb1pnL_VvTvu@x0w={TK2y(ll`Z z4c39SRD2#ZA~*Iy?;<#?;izyH*38;w}$fh-6KnT$v~ zQbLZ{c2@kco}g_?|4t{(It+fSLkTh}v}v#^bvBbB>d~{hivr~#`mi8FIL!J;n7)0%`pZ}s<09;R|dK*l&1mb=H zp=idbC)EYCe{F8;mT0d!eKp$Kc=jrMI_mel!(^i>a8!H{zuAySPZYVOo;!Ub&V5{q zFecdlZ6(HD#lqBixMgo3hVHl-Z8pTyDSp^Zx@#nPOCWN|=R949#yQ;2ikS7Raq9h! zpA(H)nIyry$qwXeyhdbGUh%q;a0($N-bAc zwZKj{t&6@OuZnN&I}GlcCAGZtBRa*OcdW!>7wSwb(R0v_h07L{5Zw2S4Q#*m-djl# zN$0=*D`>MQrRbt3)mPuRMZ#wj#Y4cHFs!V%tIt6%7U!{tpbmum=9pWOwHMA4yZtZyBh4_E4}JBeOJV@qV;A>2qQOxswtWapN6o(&wSnIxu^qE%UGE37HDI)=oS~R7 zOt>Y7qYdu$-g4ytH-41a`2os#-igMrLik9}5#eRzsAB@E0bhRD?&o&gOG+-9t8`cQ zy#Xw8G^T^_ab2{-Q@mKw#RChKJ++F=DRvZny?z4Vw?}95)3c}yz4B==LNC%d6u;;{ z(<6<)hXC%CuIEoZwp##xNx9%?2M(*&*$am}&OYq}^6z}`j?Ni}@<@O)jNCSJfSWnY zl`u*kH)rTh&zR$abqew_yKQUd==`-iwpKVt_+)#*X-R!UFd?nZWcDHpsI!v7l3<;V z+f^5IzO_3dg=hxm3fc+ z5`8{7C7A?jDRD}rx8D)(;5d$4OSg9fVn6B!|Ei&W~a%vfXY+0Nj3TUF>G#5?sVmnJ!KtzYvx0noZ zbzsE=R0*IS8ci_XnohH)6hsbw>dFq5alY<2yvzO3vpc1fOj@QAf!&#n_1U2~)uY4)-PmiXChTE{qlMv#~Odx-!5wt|d4dK3V|3LAu?6S-L5%XH8xtMmBmkt}|g9*rZdS)Kri! zoO-`@n>VYlO3Y4|UB#B>K7`WhL+*FkpHD$M1Qbg&garY!=gFN8xG{5FGpNysR2qm`GvKj@$aBu>A4IA4fTxi=cj|sZx37M+Qz&!2 zq@DtKa4URR&ViD3U0+)e-n8RTZ zPu&&70>w@aARVN^CrgSDrxPyVVz@e-G!IZ0eL10B>#244joEq3IPDgP7{?^e1GkaN zBaRf;!KG#FWq{TOd>2lJC2}?qmD&tDOiLhnFA1C*?nj)`?!x6JC`m(pwjYY};WPmo zSGHh;Yjg|Qczvd8C{Vzo3+^!~LLVjK(hKS6HRr0d?&_6Kcxiu9R~9~WI~}C}pJ-}b zO;cJCY9`8M9ln>`d3#HeK$meX|jeJoXm z(TpdqeC9G~n3^iFL%G4#7^Tg4LTVgFOq_WVt+E@Z!IbGr(Dddn)!3cL7K61&blY<; z9bYEqGiK2Phn0utaYY?82VMiZ4DoE5D6u>WIe zZIy6wl~oUOZ8Tv>8j;?D(1$(-i7}4bbhx*p?T2+Q8!3i|cQ`{$AnQ=dD`P!xossO{ zhIM)y%h0YM%;wGG{M5ynt<)PkwD6 zlAsns!~e0m$$EVkWNg$}5Gv&xXmny0c&99*_m+W_#4~Z;6KPzsUkt+AvY)m*6of>vG-(uXo*mR5!?7&bIZ2$AOZK*vhYxVA7^D<0C`WIbsVQv7Ky271l!Ip!e#y7muR7d<5)B;{9~i>{>(|s%!;Qw%rrCuHY`-S1gk8KW@F-DYdvgs z3yruFEgL|%*&Q&%dQZl*^5&F73+u%w++LqGNoRV@%=F7E;2;yF{`S=E+5=4vdNh;< zR6OeqIYDzLz};^>;e`;TqgJGE4VWHWc^9k%+DQM9yl8}+{}Bp1jAaLHKCcpn?i$rT zza))eiCQj@r_JN{uZXTE7cx~;40#O!&zWJV(w4)iB+{<|c-{0KfvPi7j71s) zgVH~fNL0LPZzr*pb8;$yfLa*Pg8$&Rm>=zIAf*8ZRX{7;yY(jnX0rdZmoZ(vPAtg6 zR))PLY;=TG#2oy|kTj3>-)}1yNSHw&8yD7#S_}sMYnoZt{X(0vZaYbg<7v)?opEZ1 zC$>)KtHZMzlor6fD%I_7ffO-kPdH)OIW3y&JfyYyu8UF16w5G#QZwN2g-MkVdIU#g zO&8c&ShbrqZzjG35)73{pRMSc;->UZ4Y4x49^}iNpr@Y1cLU-2G5Ff`nuoL#H8}&m zeGvt_fu=p|T)g?HgUl&`w~1Hy)Y{sbwYMhMU60qGwyzd4JhYC#Y(k4oe@y@MsFzHp zHKX5Gs_xz7$Le0SU7wY{h+YFq&;PHu?~H0P3)h8Akm5*@Dk?<~DI%y5krJZ_NUs5< z1QbIrqJo5GqK=4wpn!n12+~4Rx)2a&5R{ITOhQu_ia>~nA(TPyM!fp5*1hYTd(S%S z@blx_?R}r;d7r&^0wDgVgYPLKj!v{3�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 literal 0 HcmV?d00001 diff --git a/html/html/walk9_p2.png b/html/html/walk9_p2.png new file mode 100644 index 0000000000000000000000000000000000000000..3143e74986abea65b37f9bf87e0e2fcbb1364eb8 GIT binary patch literal 46788 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 + + + +2011b +Tabular Expression Toolbox +Toolbox +$toolbox/matlab/icons/matlabicon.gif +./html +$toolbox/matlab/icons/bookicon.gif + + + + +TableLibrary +$toolbox/simulink/simulink/simulinkicon.gif + + + + +TableToolMatlab +$toolbox/matlab/icons/figureicon.gif + + + + + diff --git a/safe_execute_external_command.m b/safe_execute_external_command.m new file mode 100644 index 0000000..d72d1d7 --- /dev/null +++ b/safe_execute_external_command.m @@ -0,0 +1,36 @@ +function [ status, results ] = safe_execute_external_command( cmd ) +%SAFE_EXECUTE_EXTERNAL_COMMAND Executes a command avoiding various Matlab pitfalls +% Exectues the given command using the system function, while avoid +% various pitfalls that occur while running the matlab context. +% Specifically, it removes matlab related paths from the LB_LIBRARY_PATH. +% It restores them on exit. + + old_path = getenv('LD_LIBRARY_PATH'); + new_path = old_path; + + new_path = regexp(new_path, ':', 'split'); + new_new_path = ''; + + for i=1:size(new_path, 2) + finds = strfind(lower(new_path(i)), 'matlab'); + if size(finds{1}) == [0 0] + new_new_path = [new_new_path new_path{i} ':']; %#ok Since size is dynamically found + end + end + + setenv('LD_LIBRARY_PATH', new_new_path(1:size(new_new_path,2)-1)) + + had_error = 0; + try + [ status, results ] = system( cmd ); + catch exception + had_error = 1; + end + + setenv('LD_LIBRARY_PATH', old_path); + + if had_error == 1 + throw(exception) + end +end + diff --git a/slblocks.m b/slblocks.m new file mode 100644 index 0000000..d521a35 --- /dev/null +++ b/slblocks.m @@ -0,0 +1,89 @@ +function blkStruct = slblocks +%SLBLOCKS Defines the block library for a specific Toolbox or Blockset. +% SLBLOCKS returns information about a Blockset to Simulink. The +% information returned is in the form of a BlocksetStruct with the +% following fields: +% +% Name Name of the Blockset in the Simulink block library +% Blocksets & Toolboxes subsystem. +% OpenFcn MATLAB expression (function) to call when you +% double-click on the block in the Blocksets & Toolboxes +% subsystem. +% MaskDisplay Optional field that specifies the Mask Display commands +% to use for the block in the Blocksets & Toolboxes +% subsystem. +% Browser Array of Simulink Library Browser structures, described +% below. +% +% The Simulink Library Browser needs to know which libraries in your +% Blockset it should show, and what names to give them. To provide +% this information, define an array of Browser data structures with one +% array element for each library to display in the Simulink Library +% Browser. Each array element has two fields: +% +% Library File name of the library (mdl-file) to include in the +% Library Browser. +% Name Name displayed for the library in the Library Browser +% window. Note that the Name is not required to be the +% same as the mdl-file name. +% +% Example: +% +% % +% % Define the BlocksetStruct for the Simulink block libraries +% % Only simulink_extras shows up in Blocksets & Toolboxes +% % +% blkStruct.Name = ['Simulink' sprintf('\n') 'Extras']; +% blkStruct.OpenFcn = simulink_extras; +% blkStruct.MaskDisplay = disp('Simulink\nExtras'); +% +% % +% % Both simulink and simulink_extras show up in the Library Browser. +% % +% blkStruct.Browser(1).Library = 'simulink'; +% blkStruct.Browser(1).Name = 'Simulink'; +% blkStruct.Browser(2).Library = 'simulink_extras'; +% blkStruct.Browser(2).Name = 'Simulink Extras'; +% +% See also FINDBLIB, LIBBROWSE. + +% Copyright 1990-2006 The MathWorks, Inc. +% $Revision: 1.20.2.7 $ + +% +% Name of the subsystem which will show up in the Simulink Blocksets +% and Toolboxes subsystem. +% +blkStruct.Name = ['Tabular Expression Toolbox']; + +% +% The function that will be called when the user double-clicks on +% this icon. +% +blkStruct.OpenFcn = ''; + +% +% The argument to be set as the Mask Display for the subsystem. You +% may comment this line out if no specific mask is desired. +% Example: blkStruct.MaskDisplay = 'plot([0:2*pi],sin([0:2*pi]));'; +% No display for Simulink Extras. +% +blkStruct.MaskInitialization = ''; +blkStruct.MaskDisplay = ''; +blkStruct.IsFlat = 1; +% +% Define the Browser structure array, the first element contains the +% information for the Simulink block library and the second for the +% Simulink Extras block library. +% +Browser(1).Library = 'TableLibrary'; +Browser(1).Name = 'Tabular Expression Toolbox'; +Browser(1).IsFlat = 1;% Is this library "flat" (i.e. no subsystems)? + + +blkStruct.Browser = Browser; + + +% End of slblocks + + diff --git a/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l b/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l new file mode 100644 index 0000000000000000000000000000000000000000..3eb60f9c3227aba8749ff462030b31e5a45d76f9 GIT binary patch literal 14720 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 JzX5T-=W(D#Gll>F literal 0 HcmV?d00001 diff --git a/slprj/_sfprj/EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat b/slprj/_sfprj/EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat new file mode 100644 index 0000000000000000000000000000000000000000..6a37be6757b3b860a74d6f62ecf79d41d24e647d GIT binary patch literal 3041 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 Yn^Nfq%dRFr*|{0;D^)-M55_kC58JHl`2YX_ literal 0 HcmV?d00001 diff --git a/slprj/_sfprj/precompile/BowI5YMW1AWxfhCwnohcRB.mat b/slprj/_sfprj/precompile/BowI5YMW1AWxfhCwnohcRB.mat new file mode 100644 index 0000000000000000000000000000000000000000..148b09956bc7513f2afc536367c87d45e30f6086 GIT binary patch literal 700 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXAEY!a$?~%*bk5Aw@vZs%m-W;}4h5Ebvpy=%IvLIKXARTLY3~>OQQLH2(|wmS zc5T1x6zUe#9kF;ZA^KZkUy#bLIi52soGe%Tto4#cI&?D|FZBSPa}5N`~Uh`p7Vv<)TZn0 zrlg9KTpa6I9|ujBpSekC>Nl<_l8+yjss(9JT>U5h%i+NP^YS`o&wu`<`*-WbNZB-D z@xz?lmMm^pO@GT(Xe^%j$}sD?&M~E}9?eRkGCOj%1%-Rwjh|TkvF2u2pi#MGef8|bi{)7=TV|Yjb$<%`;plgrbJ&-a$uYfu{UGb*EAxE5e`n`!K5+j6e|w$9 zm%~?gER?@@zvk+v8Nbe6`)c-OHhZu1ud{#8hU>=uO}qTLZerb@`I3L7w?b-Av<6QQmZGU&H{{F9Vvz>o=6X8t^=>bmr#szIp^&!T{z3SxC3u`Y%jxB-b@q(sM_*mf5>FjZmY+Lrs2i`;*tkOI=G>V_^&DDX zuDI87>)p)hlV?t!F=cXB!5(#kD-%MQL{oM@Raqvk%snmTSrVJ9yg;;p!lQOxtv=m4 zhX!G-cXvJC5>z~QJ+B83}>)0pDJip8<(|OhI*YYk`|7*ir zbbhwFjlV-l+0N&j3TF?jpHX;WB2&Hmir~F0M*1zPj~OP|UDy-wT=ztbq~dCAkr}50 zWQ$)LXvl{`0kuI498r2Mv;(?=TS~QILhpT*%#l*SmgQu`w+kY=_{ekHp bC#`<7+xBq#jNfn1dcR40$HZ`8>ACL!?k6?c literal 0 HcmV?d00001 diff --git a/slprj/_sfprj/untitled/amsi_serial.mat b/slprj/_sfprj/untitled/amsi_serial.mat new file mode 100644 index 0000000000000000000000000000000000000000..ca5b1b9f6cca2e3496f19472637c8b7d679b0991 GIT binary patch literal 227 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA&odT$q$sm{wDm6_}R97crM1>xfY literal 0 HcmV?d00001 diff --git a/statusbar.m b/statusbar.m new file mode 100644 index 0000000..9765809 --- /dev/null +++ b/statusbar.m @@ -0,0 +1,265 @@ +function statusbarHandles = statusbar(varargin) +%statusbar set/get the status-bar of Matlab desktop or a figure +% +% statusbar sets the status-bar text of the Matlab desktop or a figure. +% statusbar accepts arguments in the format accepted by the sprintf +% function and returns the statusbar handle(s), if available. +% +% Syntax: +% statusbarHandle = statusbar(handle, text, sprintf_args...) +% +% statusbar(text, sprintf_args...) sets the status bar text for the +% current figure. If no figure is selected, then one will be created. +% Note that figures with 'HandleVisibility' turned off will be skipped +% (compare findobj & findall). +% In these cases, simply pass their figure handle as first argument. +% text may be a single string argument, or anything accepted by sprintf. +% +% statusbar(handle, ...) sets the status bar text of the figure +% handle (or the figure which contains handle). If the status bar was +% not yet displayed for this figure, it will be created and displayed. +% If text is not supplied, then any existing status bar is erased, +% unlike statusbar(handle, '') which just clears the text. +% +% statusbar(0, ...) sets the Matlab desktop's status bar text. If text is +% not supplied, then any existing text is erased, like statusbar(0, ''). +% +% statusbar([handles], ...) sets the status bar text of all the +% requested handles. +% +% statusbarHandle = statusbar(...) returns the status bar handle +% for the selected figure. The Matlab desktop does not expose its +% statusbar object, so statusbar(0, ...) always returns []. +% If multiple unique figure handles were requested, then +% statusbarHandle is an array of all non-empty status bar handles. +% +% Notes: +% 1) The format statusbarHandle = statusbar(handle) does NOT erase +% any existing statusbar, but just returns the handles. +% 2) The status bar is 20 pixels high across the entire bottom of +% the figure. It hides everything between pixel heights 0-20, +% even parts of uicontrols, regardless of who was created first! +% 3) Three internal handles are exposed to the user (Figures only): +% - CornerGrip: a small square resizing grip on bottom-right corner +% - TextPanel: main panel area, containing the status text +% - ProgressBar: a progress bar within TextPanel (default: invisible) +% +% Examples: +% statusbar; % delete status bar from current figure +% statusbar(0, 'Desktop status: processing...'); +% statusbar([hFig1,hFig2], 'Please wait while processing...'); +% statusbar('Processing %d of %d (%.1f%%)...',idx,total,100*idx/total); +% statusbar('Running... [%s%s]',repmat('*',1,fix(N*idx/total)),repmat('.',1,N-fix(N*idx/total))); +% existingText = get(statusbar(myHandle),'Text'); +% +% Examples customizing the status-bar appearance: +% sb = statusbar('text'); +% set(sb.CornerGrip, 'visible','off'); +% set(sb.TextPanel, 'Foreground',[1,0,0], 'Background','cyan', 'ToolTipText','tool tip...') +% set(sb, 'Background',java.awt.Color.cyan); +% +% % sb.ProgressBar is by default invisible, determinite, non-continuous fill, min=0, max=100, initial value=0 +% set(sb.ProgressBar, 'Visible','on', 'Minimum',0, 'Maximum',500, 'Value',234); +% set(sb.ProgressBar, 'Visible','on', 'Indeterminate','off'); % indeterminate (annimated) +% set(sb.ProgressBar, 'Visible','on', 'StringPainted','on'); % continuous fill +% set(sb.ProgressBar, 'Visible','on', 'StringPainted','on', 'string',''); % continuous fill, no percentage text +% +% % Adding a checkbox +% jCheckBox = javax.swing.JCheckBox('cb label'); +% sb.add(jCheckBox,'West'); % Beware: East also works but doesn't resize automatically +% +% Notes: +% Statusbar will probably NOT work on Matlab versions earlier than 6.0 (R12) +% In Matlab 6.0 (R12), figure statusbars are not supported (only desktop statusbar) +% +% Warning: +% This code heavily relies on undocumented and unsupported Matlab +% functionality. It works on Matlab 7+, but use at your own risk! +% +% Bugs and suggestions: +% Please send to Yair Altman (altmany at gmail dot com) +% +% Change log: +% 2007-May-04: Added partial support for Matlab 6 +% 2007-Apr-29: Added internal ProgressBar; clarified main comment +% 2007-Apr-25: First version posted on MathWorks file exchange: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14773 +% +% See also: +% ishghandle, sprintf, findjobj (on the file exchange) + +% License to use and modify this code is granted freely without warranty to all, as long as the original author is +% referenced and attributed as such. The original author maintains the right to be solely associated with this work. + +% Programmed and Copyright by Yair M. Altman: altmany(at)gmail.com +% $Revision: 1.0 $ $Date: 2007/04/25 16:43:24 $ + + % Check for available Java/AWT (not sure if Swing is really needed so let's just check AWT) + if ~usejava('awt') + error('YMA:statusbar:noJava','statusbar only works on Matlab envs that run on java'); + end + + % Args check + if nargin < 1 | ischar(varargin{1}) %#ok for Matlab 6 compatibility + handles = gcf; % note: this skips over figures with 'HandleVisibility'='off' + else + handles = varargin{1}; + varargin(1) = []; + end + + % Ensure that all supplied handles are valid HG GUI handles (Note: 0 is a valid HG handle) + if isempty(handles) | ~all(ishandle(handles)) %#ok for Matlab 6 compatibility + error('YMA:statusbar:invalidHandle','invalid GUI handle passed to statusbar'); + end + + % Retrieve the requested text string (only process once, for all handles) + if isempty(varargin) + deleteFlag = (nargout==0); + updateFlag = 0; + statusText = ''; + else + deleteFlag = 0; + updateFlag = 1; + statusText = sprintf(varargin{:}); + end + + % Loop over all unique root handles (figures/desktop) of the supplied handles + rootHandles = []; + if any(handles) % non-0, i.e. non-desktop + try + rootHandles = ancestor(handles,'figure'); + if iscell(rootHandles), rootHandles = cell2mat(rootHandles); end + catch + errMsg = 'Matlab version is too old to support figure statusbars'; + % Note: old Matlab version didn't have the ID optional arg in warning/error, so I can't use it here + if any(handles==0) + warning([errMsg, '. Updating the desktop statusbar only.']); %#ok for Matlab 6 compatibility + else + error(errMsg); + end + end + end + rootHandles = unique(rootHandles); + if any(handles==0), rootHandles(end+1)=0; end + statusbarObjs = handle([]); + for rootIdx = 1 : length(rootHandles) + if rootHandles(rootIdx) == 0 + setDesktopStatus(statusText); + else + thisStatusbarObj = setFigureStatus(rootHandles(rootIdx), deleteFlag, updateFlag, statusText); + if ~isempty(thisStatusbarObj) + statusbarObjs(end+1) = thisStatusbarObj; + end + end + end + + % If statusbarHandles requested + if nargout + % Return the list of all valid (non-empty) statusbarHandles + statusbarHandles = statusbarObjs; + end + +%end % statusbar %#ok for Matlab 6 compatibility + +%% Set the status bar text of the Matlab desktop +function setDesktopStatus(statusText) + try + % First, get the desktop reference + try + desktop = com.mathworks.mde.desk.MLDesktop.getInstance; % Matlab 7+ + catch + desktop = com.mathworks.ide.desktop.MLDesktop.getMLDesktop; % Matlab 6 + end + + % Schedule a timer to update the status text + % Note: can't update immediately, since it will be overridden by Matlab's 'busy' message... + try + t = timer('Name','statusbarTimer', 'TimerFcn',{@setText,desktop,statusText}, 'StartDelay',0.05, 'ExecutionMode','singleShot'); + start(t); + catch + % Probably an old Matlab version that still doesn't have timer + desktop.setStatusText(statusText); + end + catch + %if any(ishandle(hFig)), delete(hFig); end + error('YMA:statusbar:desktopError',['error updating desktop status text: ' lasterr]); + end +%end %#ok for Matlab 6 compatibility + +%% Utility function used as setDesktopStatus's internal timer's callback +function setText(varargin) + if nargin == 4 % just in case... + targetObj = varargin{3}; + statusText = varargin{4}; + targetObj.setStatusText(statusText); + else + % should never happen... + end +%end %#ok for Matlab 6 compatibility + +%% Set the status bar text for a figure +function statusbarObj = setFigureStatus(hFig, deleteFlag, updateFlag, statusText) + try + jFrame = get(hFig,'JavaFrame'); + jFigPanel = get(jFrame,'FigurePanelContainer'); + jRootPane = jFigPanel.getComponent(0).getRootPane; + + % If invalid RootPane, retry up to N times + tries = 10; + while isempty(jRootPane) & tries>0 %#ok for Matlab 6 compatibility - might happen if figure is still undergoing rendering... + drawnow; pause(0.001); + tries = tries - 1; + jRootPane = jFigPanel.getComponent(0).getRootPane; + end + jRootPane = jRootPane.getTopLevelAncestor; + + % Get the existing statusbarObj + statusbarObj = jRootPane.getStatusBar; + + % If status-bar deletion was requested + if deleteFlag + % Non-empty statusbarObj - delete it + if ~isempty(statusbarObj) + jRootPane.setStatusBarVisible(0); + end + elseif updateFlag % status-bar update was requested + % If no statusbarObj yet, create it + if isempty(statusbarObj) + statusbarObj = com.mathworks.mwswing.MJStatusBar; + jProgressBar = javax.swing.JProgressBar; + jProgressBar.setVisible(false); + statusbarObj.add(jProgressBar,'West'); % Beware: East also works but doesn't resize automatically + jRootPane.setStatusBar(statusbarObj); + end + statusbarObj.setText(statusText); + jRootPane.setStatusBarVisible(1); + end + statusbarObj = handle(statusbarObj); + + % Add quick references to the corner grip and status-bar panel area + if ~isempty(statusbarObj) + addOrUpdateProp(statusbarObj,'CornerGrip', statusbarObj.getParent.getComponent(0)); + addOrUpdateProp(statusbarObj,'TextPanel', statusbarObj.getComponent(0)); + addOrUpdateProp(statusbarObj,'ProgressBar', statusbarObj.getComponent(1).getComponent(0)); + end + catch + try + title = jFrame.fFigureClient.getWindow.getTitle; + catch + title = get(hFig,'Name'); + end + error('YMA:statusbar:figureError',['error updating status text for figure ' title ': ' lasterr]); + end +%end %#ok for Matlab 6 compatibility + +%% Utility function: add a new property to a handle and update its value +function addOrUpdateProp(handle,propName,propValue) + try + if ~isprop(handle,propName) + schema.prop(handle,propName,'mxArray'); + end + set(handle,propName,propValue); + catch exception + % never mind... + + end +%end %#ok for Matlab 6 compatibility \ No newline at end of file diff --git a/untitled.slx b/untitled.slx new file mode 100644 index 0000000000000000000000000000000000000000..aba118964349cdc219326733f6a25b7c27ad38b0 GIT binary patch literal 52402 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 Lx|)o>KhFLimkJ8k literal 0 HcmV?d00001 diff --git a/utilities/unsuppressed_output_directory.m b/utilities/unsuppressed_output_directory.m new file mode 100644 index 0000000..f7b98d1 --- /dev/null +++ b/utilities/unsuppressed_output_directory.m @@ -0,0 +1,43 @@ +function [] = unsuppressed_output_directory(varargin) +%UNTITLED3 Summary of this function goes here +% Detailed explanation goes here + +% look in the current directory +switch nargin + case 0 + current_directory = '.'; + recurse = true; + case 1 + current_directory = varargin{1}; + recurse = true; + case 2 + current_directory = varargin{1}; + recurse = varargin{2}; +end + + +list_of_files = dir(current_directory); +for i = 1:size(list_of_files) + % ignore the . and .. basically anything starting with . ie .svn, etc. + no_search_dir = regexp(char(list_of_files(i).name),'^\.','once'); + if ~isempty(no_search_dir) + continue; + end + if (list_of_files(i).isdir) + if recurse + + unsuppressed_output_directory([current_directory '/' list_of_files(i).name],recurse); + end + end + +end + +what_info = what(current_directory); +for j = 1:size(what_info.m,1) + unsuppressed_output_file([current_directory '/' char(what_info.m(j))]); +end + + + +end + diff --git a/utilities/unsuppressed_output_file.m b/utilities/unsuppressed_output_file.m new file mode 100644 index 0000000..924a259 --- /dev/null +++ b/utilities/unsuppressed_output_file.m @@ -0,0 +1,74 @@ +function [] = unsuppressed_output_file(file) +% [] = unsuppressed_output_file(file) +% +% Outputs to the command window a list of the lines in file which likely do +% not have suppressed output. Lines with keywords which will not produce outputs ie +% (if, else, continue, function, etc.) are ignored. + +% look through a file for lines which are unsuppressed + +string = [char(10) 'file = ' file char(10)]; +fid = fopen(file); +if fid == -1 + string = [string 'unable to open file' char(10)]; + fprintf('%s',string); + return; +end +data = fread(fid); +cstring = char(rot90(data)); +lines = regexp(cstring,'\n','split'); +count = 0; +for i = 1:size(lines,2) + + % don't consider comments at begining + comment = regexp(char(lines(i)),'\s*%.*','once'); + if ~isempty(comment) + continue; + end + + % don't consider keywords at begining of expression + keyword = regexp(strtrim(char(lines(i))),'^(end|function|methods|properties|classdef|for|if|elseif|else|switch|case|try|catch|otherwise|while|return|continue|warning|break|global|persistent|set|delete)','once'); + if ~isempty(keyword) + continue; + end + + % don't consider multiline expressions + multiline = regexp(strtrim(char(lines(i))),'\.\.\.$','once'); + if ~isempty(multiline) + continue; + end + + % don't consider empty lines + if isempty(char(lines(i))) + continue; + end + + % don't consider lines of just spaces + if isempty(strtrim(char(lines(i)))) + continue; + end + + % don't consider lines that end in a semi-colon and have an optional + % comment after + semis = regexp(strtrim(char(lines(i))),'.*;(\s*%.*)*','once'); + if ~isempty(semis) + continue; + end + + % if string passes all these tests we infer that it is what we are + % looking for + count = count + 1; + string = [string 'line ' num2str(i) ': ' char(lines(i)) char(10)]; + + +end + +% only print something if we have found a line that meets our criteria +if count ~= 0 + fprintf('%s',string); + +end + +fclose(fid); + +end \ No newline at end of file -- GitLab From 4a5e66c812075afa27e9c58eff441b62f4b6c282 Mon Sep 17 00:00:00 2001 From: Pesara Amarasekera Date: Wed, 18 May 2022 17:50:57 -0400 Subject: [PATCH 3/8] Added more output commands --- @RGrid/delete_g1s.asv | 50 +++++++++++++++++++++++++++++++++++++++++++ @RGrid/delete_g1s.m | 27 +++++++++++++++++------ 2 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 @RGrid/delete_g1s.asv diff --git a/@RGrid/delete_g1s.asv b/@RGrid/delete_g1s.asv new file mode 100644 index 0000000..5855a4c --- /dev/null +++ b/@RGrid/delete_g1s.asv @@ -0,0 +1,50 @@ +%% delete_g1s +% Same as delete_g2s but we are now deleting RCell with a +% reference to the inputed cell in their Cell1 +% inputs: +% object:RGrid - reference to current RGrid +% cell:Cell - reference to cell being deleted +% outputs; +% none +% Author: Colin Eles elesc@mcmaster.ca +% Organization: McMaster Centre for Software Certification +function [] = delete_g1s(object,cell) +deleted = []; +for i=1:size(object.Cells,2) + if (object.Cells(i).Cell1 == cell) + %[deleted i] %Check this one first + deleted = [deleted i]; + %deleted + end +end +if(~isempty(deleted)) + + %sprintf("Res: %s\n", object.Cells(deleted).result_text) + %object.Cells(deleted).result + %{ + for i=1:size(object.Cells,2) + if(object.Cells(i)) + delete(object.Cells(i).result) + end + end + %} + class(object) + class(object.Cells(deleted)) + object.Cells() + object.Cells(deleted) + %Extract field names + fn = fieldnames(object.Cells(deleted)) + for i=1: + %{ + for i=1:size(object.Cells(deleted).result) + ishandle(object.Cells(deleted).result(i)); + end + %} + isjava(object.Cells(deleted).result) + isa(object.Cells(deleted).result,'UIControl') + class(object.Cells(deleted).result) + delete(object.Cells(deleted).result); + object.Cells(deleted) = []; +end +end + diff --git a/@RGrid/delete_g1s.m b/@RGrid/delete_g1s.m index 5ae2407..680e542 100644 --- a/@RGrid/delete_g1s.m +++ b/@RGrid/delete_g1s.m @@ -12,7 +12,6 @@ function [] = delete_g1s(object,cell) deleted = []; for i=1:size(object.Cells,2) if (object.Cells(i).Cell1 == cell) -<<<<<<< HEAD %[deleted i] %Check this one first deleted = [deleted i]; %deleted @@ -29,13 +28,27 @@ if(~isempty(deleted)) end end %} -======= - deleted = [deleted i]; - + class(object) + class(object.Cells(deleted)) + object.Cells() + object.Cells(deleted) + %Extract field names + fn = fieldnames(object.Cells(deleted)) + for i=1:numel(fn) + object.Cells(deleted).(fn{i}) + if (isobject(object.Cells(deleted).(fn{i}))) + delete(object.Cells(deleted).(fn{i})); + object.Cells(deleted).fn{i} = []; + end end -end -if(~isempty(deleted)) ->>>>>>> 6e8ce001ab8e32d0a66c7fab9f1c8f2d9f1bad69 + %{ + for i=1:size(object.Cells(deleted).result) + ishandle(object.Cells(deleted).result(i)); + end + %} + isjava(object.Cells(deleted).result) + isa(object.Cells(deleted).result,'UIControl') + class(object.Cells(deleted).result) delete(object.Cells(deleted).result); object.Cells(deleted) = []; end -- GitLab From bff83fc449bd672339011cc0136792ae2a4aee14 Mon Sep 17 00:00:00 2001 From: Pesara Amarasekera Date: Thu, 19 May 2022 15:49:04 -0400 Subject: [PATCH 4/8] Fixed issues with splitting, deleting and cursor --- +TableBlock/set_code.m | 6 + @FindJavaObjects/findjobj.m | 3460 +++++++++++++++++++++++++++++++++ @GUI/textbox_callback.m | 19 + @RGrid/delete_g1s.asv | 50 - @RGrid/delete_g1s.m | 11 +- @RGrid/delete_g2s.m | 2 +- FindJavaObjects/findjobj.asv | 3459 ++++++++++++++++++++++++++++++++ FindJavaObjects/findjobj.m | 3459 ++++++++++++++++++++++++++++++++ Jin_Parnas_Example.mdl | 1688 ++++++++++++++++ Jin_Parnas_Example.mdl.r2010a | 1243 ++++++++++++ untitled.slx => demo_1.slx | Bin f.cvc | 24 + jin_ex.cvc | 26 + untitled1.slx | Bin 0 -> 47945 bytes 14 files changed, 13392 insertions(+), 55 deletions(-) create mode 100644 @FindJavaObjects/findjobj.m delete mode 100644 @RGrid/delete_g1s.asv create mode 100644 FindJavaObjects/findjobj.asv create mode 100644 FindJavaObjects/findjobj.m create mode 100644 Jin_Parnas_Example.mdl create mode 100644 Jin_Parnas_Example.mdl.r2010a rename untitled.slx => demo_1.slx (100%) create mode 100644 f.cvc create mode 100644 jin_ex.cvc create mode 100644 untitled1.slx diff --git a/+TableBlock/set_code.m b/+TableBlock/set_code.m index 01bea75..24e425a 100644 --- a/+TableBlock/set_code.m +++ b/+TableBlock/set_code.m @@ -143,6 +143,8 @@ for i=1:size(outports,1) for j=1:size(out_handles,1) if strcmp(get_param(outports(i),'Name'),get_param(out_handles(j),'Name')) + % Set the port number so the ports line up properly. + set_param(outports(i), 'Port', get_param(out_handles(j), 'Port')); found = 1; end end @@ -174,6 +176,10 @@ for j = 1:size(out_handles,1) add_block('simulink/Sinks/Out1',new_port); new_port_num = sprintf('%s/1',get_param(out_handles(j),'Name')); dest_port = sprintf('%s/%d','code',j); + + % Set the port number so the ports line up properly. + set_param(new_port, 'Port', get_param(out_handles(j), 'Port')); + try add_line(getfullname(block_handle),dest_port,new_port_num); end diff --git a/@FindJavaObjects/findjobj.m b/@FindJavaObjects/findjobj.m new file mode 100644 index 0000000..86fdd99 --- /dev/null +++ b/@FindJavaObjects/findjobj.m @@ -0,0 +1,3460 @@ +function [handles,levels,parentIdx,listing] = findjobj(container,varargin) %#ok<*CTCH,*ASGLU,*MSNU,*NASGU> +disp("Number of input arguments: " + nargin) +celldisp(varargin) +%findjobj Find java objects contained within a specified java container or Matlab GUI handle +% +% Syntax: +% [handles, levels, parentIds, listing] = findjobj(container, 'PropName',PropValue(s), ...) +% +% Input parameters: +% container - optional handle to java container uipanel or figure. If unsupplied then current figure will be used +% 'PropName',PropValue - optional list of property pairs (case insensitive). PropName may also be named -PropName +% 'position' - filter results based on those elements that contain the specified X,Y position or a java element +% Note: specify a Matlab position (X,Y = pixels from bottom left corner), not a java one +% 'size' - filter results based on those elements that have the specified W,H (in pixels) +% 'class' - filter results based on those elements that contain the substring (or java class) PropValue +% Note1: filtering is case insensitive and relies on regexp, so you can pass wildcards etc. +% Note2: '-class' is an undocumented findobj PropName, but only works on Matlab (not java) classes +% 'property' - filter results based on those elements that possess the specified case-insensitive property string +% Note1: passing a property value is possible if the argument following 'property' is a cell in the +% format of {'propName','propValue'}. Example: FINDJOBJ(...,'property',{'Text','click me'}) +% Note2: partial property names (e.g. 'Tex') are accepted, as long as they're not ambiguous +% 'depth' - filter results based on specified depth. 0=top-level, Inf=all levels (default=Inf) +% 'flat' - same as specifying: 'depth',0 +% 'not' - negates the following filter: 'not','class','c' returns all elements EXCEPT those with class 'c' +% 'persist' - persist figure components information, allowing much faster results for subsequent invocations +% 'nomenu' - skip menu processing, for "lean" list of handles & much faster processing; +% This option is the default for HG containers but not for figure, Java or no container +% 'print' - display all java elements in a hierarchical list, indented appropriately +% Note1: optional PropValue of element index or handle to java container +% Note2: normally this option would be placed last, after all filtering is complete. Placing this +% option before some filters enables debug print-outs of interim filtering results. +% Note3: output is to the Matlab command window unless the 'listing' (4th) output arg is requested +% 'list' - same as 'print' +% 'debug' - list found component positions in the Command Window +% +% Output parameters: +% handles - list of handles to java elements +% levels - list of corresponding hierarchy level of the java elements (top=0) +% parentIds - list of indexes (in unfiltered handles) of the parent container of the corresponding java element +% listing - results of 'print'/'list' options (empty if these options were not specified) +% +% Note: If no output parameter is specified, then an interactive window will be displayed with a +% ^^^^ tree view of all container components, their properties and callbacks. +% +% Examples: +% findjobj; % display list of all javaelements of currrent figure in an interactive GUI +% handles = findjobj; % get list of all java elements of current figure (inc. menus, toolbars etc.) +% findjobj('print'); % list all java elements in current figure +% findjobj('print',6); % list all java elements in current figure, contained within its 6th element +% handles = findjobj(hButton); % hButton is a matlab button +% handles = findjobj(gcf,'position',getpixelposition(hButton,1)); % same as above but also return hButton's panel +% handles = findjobj(hButton,'persist'); % same as above, persist info for future reuse +% handles = findjobj('class','pushbutton'); % get all pushbuttons in current figure +% handles = findjobj('class','pushbutton','position',123,456); % get all pushbuttons at the specified position +% handles = findjobj(gcf,'class','pushbutton','size',23,15); % get all pushbuttons with the specified size +% handles = findjobj('property','Text','not','class','button'); % get all non-button elements with 'text' property +% handles = findjobj('-property',{'Text','click me'}); % get all elements with 'text' property = 'click me' +% +% Sample usage: +% hButton = uicontrol('string','click me'); +% jButton = findjobj(hButton,'nomenu'); +% % or: jButton = findjobj('property',{'Text','click me'}); +% jButton.setFlyOverAppearance(1); +% jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); +% set(jButton,'FocusGainedCallback',@myMatlabFunction); % some 30 callback points available... +% jButton.get; % list all changeable properties... +% +% hEditbox = uicontrol('style','edit'); +% jEditbox = findjobj(hEditbox,'nomenu'); +% jEditbox.setCaretColor(java.awt.Color.red); +% jEditbox.KeyTypedCallback = @myCallbackFunc; % many more callbacks where this came from... +% jEdit.requestFocus; +% +% Technical explanation & details: +% http://undocumentedmatlab.com/blog/findjobj/ +% http://undocumentedmatlab.com/blog/findjobj-gui-display-container-hierarchy/ +% +% Known issues/limitations: +% - Cannot currently process multiple container objects - just one at a time +% - Initial processing is a bit slow when the figure is laden with many UI components (so better use 'persist') +% - Passing a simple container Matlab handle is currently filtered by its position+size: should find a better way to do this +% - Matlab uipanels are not implemented as simple java panels, and so they can't be found using this utility +% - Labels have a write-only text property in java, so they can't be found using the 'property',{'Text','string'} notation +% +% Warning: +% This code heavily relies on undocumented and unsupported Matlab functionality. +% It works on Matlab 7+, but use at your own risk! +% +% Bugs and suggestions: +% Please send to Yair Altman (altmany at gmail dot com) +% +% Change log: +% 2019-07-03: Additional fix for R2018b; added separate findjobj_fast utility +% 2018-09-21: Fix for R2018b suggested by Eddie (FEX); speedup suggested by Martin Lehmann (FEX); alert if trying to use with uifigure +% 2017-04-13: Fixed two edge-cases (one suggested by H. Koch) +% 2016-04-19: Fixed edge-cases in old Matlab release; slightly improved performance even further +% 2016-04-14: Improved performance for the most common use-case (single input/output): improved code + allow inspecting groot +% 2016-04-11: Improved performance for the most common use-case (single input/output) +% 2015-01-12: Differentiate between overlapping controls (for example in different tabs); fixed case of docked figure +% 2014-10-20: Additional fixes for R2014a, R2014b +% 2014-10-13: Fixes for R2014b +% 2014-01-04: Minor fix for R2014a; check for newer FEX version up to twice a day only +% 2013-12-29: Only check for newer FEX version in non-deployed mode; handled case of invisible figure container +% 2013-10-08: Fixed minor edge case (retrieving multiple scroll-panes) +% 2013-06-30: Additional fixes for the upcoming HG2 +% 2013-05-15: Fix for the upcoming HG2 +% 2013-02-21: Fixed HG-Java warnings +% 2013-01-23: Fixed callbacks table grouping & editing bugs; added hidden properties to the properties tooltip; updated help section +% 2013-01-13: Improved callbacks table; fixed tree refresh failure; fixed: tree node-selection didn't update the props pane nor flash the selected component +% 2012-07-25: Fixes for R2012a as well as some older Matlab releases +% 2011-12-07: Fixed 'File is empty' messages in compiled apps +% 2011-11-22: Fix suggested by Ward +% 2011-02-01: Fixes for R2011a +% 2010-06-13: Fixes for R2010b; fixed download (m-file => zip-file) +% 2010-04-21: Minor fix to support combo-boxes (aka drop-down, popup-menu) on Windows +% 2010-03-17: Important release: Fixes for R2010a, debug listing, objects not found, component containers that should be ignored etc. +% 2010-02-04: Forced an EDT redraw before processing; warned if requested handle is invisible +% 2010-01-18: Found a way to display label text next to the relevant node name +% 2009-10-28: Fixed uitreenode warning +% 2009-10-27: Fixed auto-collapse of invisible container nodes; added dynamic tree tooltips & context-menu; minor fix to version-check display +% 2009-09-30: Fix for Matlab 7.0 as suggested by Oliver W; minor GUI fix (classname font) +% 2009-08-07: Fixed edge-case of missing JIDE tables +% 2009-05-24: Added support for future Matlab versions that will not support JavaFrame +% 2009-05-15: Added sanity checks for axes items +% 2009-04-28: Added 'debug' input arg; increased size tolerance 1px => 2px +% 2009-04-23: Fixed location of popupmenus (always 20px high despite what's reported by Matlab...); fixed uiinspect processing issues; added blog link; narrower action buttons +% 2009-04-09: Automatic 'nomenu' for uicontrol inputs; significant performance improvement +% 2009-03-31: Fixed position of some Java components; fixed properties tooltip; fixed node visibility indication +% 2009-02-26: Indicated components visibility (& auto-collapse non-visible containers); auto-highlight selected component; fixes in node icons, figure title & tree refresh; improved error handling; display FindJObj version update description if available +% 2009-02-24: Fixed update check; added dedicated labels icon +% 2009-02-18: Fixed compatibility with old Matlab versions +% 2009-02-08: Callbacks table fixes; use uiinspect if available; fix update check according to new FEX website +% 2008-12-17: R2008b compatibility +% 2008-09-10: Fixed minor bug as per Johnny Smith +% 2007-11-14: Fixed edge case problem with class properties tooltip; used existing object icon if available; added checkbox option to hide standard callbacks +% 2007-08-15: Fixed object naming relative property priorities; added sanity check for illegal container arg; enabled desktop (0) container; cleaned up warnings about special class objects +% 2007-08-03: Fixed minor tagging problems with a few Java sub-classes; displayed UIClassID if text/name/tag is unavailable +% 2007-06-15: Fixed problems finding HG components found by J. Wagberg +% 2007-05-22: Added 'nomenu' option for improved performance; fixed 'export handles' bug; fixed handle-finding/display bugs; "cleaner" error handling +% 2007-04-23: HTMLized classname tooltip; returned top-level figure Frame handle for figure container; fixed callbacks table; auto-checked newer version; fixed Matlab 7.2 compatibility issue; added HG objects tree +% 2007-04-19: Fixed edge case of missing figure; displayed tree hierarchy in interactive GUI if no output args; workaround for figure sub-menus invisible unless clicked +% 2007-04-04: Improved performance; returned full listing results in 4th output arg; enabled partial property names & property values; automatically filtered out container panels if children also returned; fixed finding sub-menu items +% 2007-03-20: First version posted on the MathWorks file exchange: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317 +% +% See also: +% java, handle, findobj, findall, javaGetHandles, uiinspect (on the File Exchange) + +% License to use and modify this code is granted freely to all interested, as long as the original author is +% referenced and attributed as such. The original author maintains the right to be solely associated with this work. + +% Programmed and Copyright by Yair M. Altman: altmany(at)gmail.com +% $Revision: 1.52 $ $Date: 2019/07/03 19:09:23 $ + + % Ensure Java AWT is enabled + error(javachk('awt')); + + persistent pContainer pHandles pLevels pParentIdx pPositions + + try + % Initialize + handles = handle([]); + levels = []; + parentIdx = []; + positions = []; % Java positions start at the top-left corner + %sizes = []; + listing = ''; + hg_levels = []; + hg_handles = handle([]); % HG handles are double + hg_parentIdx = []; + nomenu = false; + menuBarFoundFlag = false; + hFig = []; + + % Force an EDT redraw before processing, to ensure all uicontrols etc. are rendered + drawnow; pause(0.02); + + % Default container is the current figure's root panel + if nargin + if isempty(container) % empty container - bail out + return; + elseif ischar(container) % container skipped - this is part of the args list... + varargin = [{container}, varargin]; + origContainer = getCurrentFigure; + [container,contentSize] = getRootPanel(origContainer); + elseif isequal(container,0) % root + origContainer = handle(container); + container = com.mathworks.mde.desk.MLDesktop.getInstance.getMainFrame; + contentSize = [container.getWidth, container.getHeight]; + elseif ishghandle(container) % && ~isa(container,'java.awt.Container') + container = container(1); % another current limitation... + hFig = ancestor(container,'figure'); + oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + try hJavaFrame = get(hFig,'JavaFrame'); catch, hJavaFrame = []; end + warning(oldWarn); + if isempty(hJavaFrame) % alert if trying to use with web-based (not Java-based) uifigure + error('YMA:findjobj:NonJavaFigure', 'Findjobj only works with Java-based figures, not web-based (App Designer) uifigures'); + end + origContainer = handle(container); + if isa(origContainer,'uimenu') || isa(origContainer,'matlab.ui.container.Menu') + % getpixelposition doesn't work for menus... - damn! + varargin = {'class','MenuPeer', 'property',{'Label',strrep(get(container,'Label'),'&','')}, varargin{:}}; + elseif ~isa(origContainer, 'figure') && ~isempty(hFig) && ~isa(origContainer, 'matlab.ui.Figure') + % For a single input & output, try using the fast variant + if nargin==1 && nargout==1 + try + handles = findjobj_fast(container); + if ~isempty(handles) + try handles = handle(handles,'callbackproperties'); catch, end + return + end + catch + % never mind - proceed normally using the slower variant below... + end + end + + % See limitations section above: should find a better way to directly refer to the element's java container + try + % Note: 'PixelBounds' is undocumented and unsupported, but much faster than getpixelposition! + % ^^^^ unfortunately, its Y position is inaccurate in some cases - damn! + %size = get(container,'PixelBounds'); + pos = fix(getpixelposition(container,1)); + %varargin = {'position',pos(1:2), 'size',pos(3:4), 'not','class','java.awt.Panel', varargin{:}}; + catch + try + figName = get(hFig,'name'); + if strcmpi(get(hFig,'number'),'on') + figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $',''); + end + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jFig = mde.getClient(figName); + if isempty(jFig), error('dummy'); end + catch + jFig = get(hJavaFrame,'FigurePanelContainer'); + end + pos = []; + try + pxsize = get(container,'PixelBounds'); + pos = [pxsize(1)+5, jFig.getHeight - (pxsize(4)-5)]; + catch + % never mind... + end + end + if size(pos,2) == 2 + pos(:,3:4) = 0; + end + if ~isempty(pos) + if isa(handle(container),'uicontrol') && strcmp(get(container,'style'),'popupmenu') + % popupmenus (combo-box dropdowns) are always 20px high + pos(2) = pos(2) + pos(4) - 20; + pos(4) = 20; + end + %varargin = {'position',pos(1:2), 'size',size(3:4)-size(1:2)-10, 'not','class','java.awt.Panel', varargin{:}}; + varargin = {'position',pos(1:2)+[0,pos(4)], 'size',pos(3:4), 'not','class','java.awt.Panel', 'nomenu', varargin{:}}; + end + elseif isempty(hFig) + hFig = handle(container); + end + [container,contentSize] = getRootPanel(hFig); + elseif isjava(container) + % Maybe a java container obj (will crash otherwise) + origContainer = container; + contentSize = [container.getWidth, container.getHeight]; + else + error('YMA:findjobj:IllegalContainer','Input arg does not appear to be a valid GUI object'); + end + else + % Default container = current figure + origContainer = getCurrentFigure; + [container,contentSize] = getRootPanel(origContainer); + end + + % Check persistency + if isequal(pContainer,container) + % persistency requested and the same container is reused, so reuse the hierarchy information + [handles,levels,parentIdx,positions] = deal(pHandles, pLevels, pParentIdx, pPositions); + else + % Pre-allocate space of complex data containers for improved performance + handles = repmat(handles,1,1000); + positions = zeros(1000,2); + + % Check whether to skip menu processing + nomenu = paramSupplied(varargin,'nomenu'); + + % Traverse the container hierarchy and extract the elements within + traverseContainer(container,0,1); + + % Remove unnecessary pre-allocated elements + dataLen = length(levels); + handles (dataLen+1:end) = []; + positions(dataLen+1:end,:) = []; + end + + % Process persistency check before any filtering is done + if paramSupplied(varargin,'persist') + [pContainer, pHandles, pLevels, pParentIdx, pPositions] = deal(container,handles,levels,parentIdx,positions); + end + + % Save data for possible future use in presentObjectTree() below + allHandles = handles; + allLevels = levels; + allParents = parentIdx; + selectedIdx = 1:length(handles); + %[positions(:,1)-container.getX, container.getHeight - positions(:,2)] + + % Debug-list all found compponents and their positions + if paramSupplied(varargin,'debug') + for origHandleIdx = 1 : length(allHandles) + thisObj = handles(origHandleIdx); + pos = sprintf('%d,%d %dx%d',[positions(origHandleIdx,:) getWidth(thisObj) getHeight(thisObj)]); + disp([repmat(' ',1,levels(origHandleIdx)) '[' pos '] ' char(toString(thisObj))]); + end + end + + % Process optional args + % Note: positions is NOT returned since it's based on java coord system (origin = top-left): will confuse Matlab users + processArgs(varargin{:}); + + % De-cell and trim listing, if only one element was found (no use for indented listing in this case) + if iscell(listing) && length(listing)==1 + listing = strtrim(listing{1}); + end + + % If no output args and no listing requested, present the FINDJOBJ interactive GUI + if nargout == 0 && isempty(listing) + + % Get all label positions + hg_labels = []; + labelPositions = getLabelsJavaPos(container); + + % Present the GUI (object tree) + if ~isempty(container) + presentObjectTree(); + else + warnInvisible(varargin{:}); + end + + % Display the listing, if this was specifically requested yet no relevant output arg was specified + elseif nargout < 4 && ~isempty(listing) + if ~iscell(listing) + disp(listing); + else + for listingIdx = 1 : length(listing) + disp(listing{listingIdx}); + end + end + end + + % If the number of output handles does not match the number of inputs, try to match via tooltips + if nargout && numel(handles) ~= numel(origContainer) + newHandles = handle([]); + switchHandles = false; + handlesToCheck = handles; + if isempty(handles) + handlesToCheck = allHandles; + end + for origHandleIdx = 1 : numel(origContainer) + try + thisContainer = origContainer(origHandleIdx); + if isa(thisContainer,'figure') || isa(thisContainer,'matlab.ui.Figure') + break; + end + try + newHandles(origHandleIdx) = handlesToCheck(origHandleIdx); %#ok + catch + % maybe no corresponding handle in [handles] + end + + % Assign a new random tooltip to the original (Matlab) handle + oldTooltip = get(thisContainer,'Tooltip'); + newTooltip = num2str(rand,99); + try + set(thisContainer,'TooltipString',newTooltip); + catch + set(thisContainer,'Tooltip',newTooltip); + end + drawnow; % force the Java handle to sync with the Matlab prop-change + try + % Search for a Java handle that has the newly-generated tooltip + for newHandleIdx = 1 : numel(handlesToCheck) + testTooltip = ''; + thisHandle = handlesToCheck(newHandleIdx); + try + testTooltip = char(thisHandle.getToolTipText); + catch + try testTooltip = char(thisHandle.getTooltipText); catch, end + end + if isempty(testTooltip) + % One more attempt - assume it's enclosed by a scroll-pane + try testTooltip = char(thisHandle.getViewport.getView.getToolTipText); catch, end + end + if strcmp(testTooltip, newTooltip) + newHandles(origHandleIdx) = thisHandle; + switchHandles = true; + break; + end + end + catch + % never mind - skip to the next handle + end + set(thisContainer,'Tooltip',oldTooltip); + catch + % never mind - skip to the next handle (maybe handle doesn't have a tooltip prop) + end + end + if switchHandles + handles = newHandles; + end + end + + % Display a warning if the requested handle was not found because it's invisible + if nargout && isempty(handles) + warnInvisible(varargin{:}); + end + + return; %debug point + + catch + % 'Cleaner' error handling - strip the stack info etc. + err = lasterror; %#ok + err.message = regexprep(err.message,'Error using ==> [^\n]+\n',''); + if isempty(findstr(mfilename,err.message)) + % Indicate error origin, if not already stated within the error message + err.message = [mfilename ': ' err.message]; + end + rethrow(err); + end + + %% Display a warning if the requested handle was not found because it's invisible + function warnInvisible(varargin) + try + if strcmpi(get(hFig,'Visible'),'off') + pos = get(hFig,'Position'); + set(hFig, 'Position',pos-[5000,5000,0,0], 'Visible','on'); + drawnow; pause(0.01); + [handles,levels,parentIdx,listing] = findjobj(origContainer,varargin{:}); + set(hFig, 'Position',pos, 'Visible','off'); + end + catch + % ignore - move on... + end + try + stk = dbstack; + stkNames = {stk.name}; + OutputFcnIdx = find(~cellfun(@isempty,regexp(stkNames,'_OutputFcn'))); + if ~isempty(OutputFcnIdx) + OutputFcnName = stkNames{OutputFcnIdx}; + warning('YMA:FindJObj:OutputFcn',['No Java reference was found for the requested handle, because the figure is still invisible in ' OutputFcnName '()']); + elseif ishandle(origContainer) && isprop(origContainer,'Visible') && strcmpi(get(origContainer,'Visible'),'off') + warning('YMA:FindJObj:invisibleHandle','No Java reference was found for the requested handle, probably because it is still invisible'); + end + catch + % Never mind... + end + end + + %% Check existence of a (case-insensitive) optional parameter in the params list + function [flag,idx] = paramSupplied(paramsList,paramName) + %idx = find(~cellfun('isempty',regexpi(paramsList(cellfun(@ischar,paramsList)),['^-?' paramName]))); + idx = find(~cellfun('isempty',regexpi(paramsList(cellfun('isclass',paramsList,'char')),['^-?' paramName]))); % 30/9/2009 fix for ML 7.0 suggested by Oliver W + flag = any(idx); + end + + %% Get current figure (even if its 'HandleVisibility' property is 'off') + function curFig = getCurrentFigure + oldShowHidden = get(0,'ShowHiddenHandles'); + set(0,'ShowHiddenHandles','on'); % minor fix per Johnny Smith + curFig = gcf; + set(0,'ShowHiddenHandles',oldShowHidden); + end + + %% Get Java reference to top-level (root) panel - actually, a reference to the java figure + function [jRootPane,contentSize] = getRootPanel(hFig) + try + contentSize = [0,0]; % initialize + jRootPane = hFig; + figName = get(hFig,'name'); + if strcmpi(get(hFig,'number'),'on') + figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $',''); + end + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jFigPanel = mde.getClient(figName); + jRootPane = jFigPanel; + jRootPane = jFigPanel.getRootPane; + catch + try + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jFrame = get(hFig,'JavaFrame'); + jFigPanel = get(jFrame,'FigurePanelContainer'); + jRootPane = jFigPanel; + jRootPane = jFigPanel.getComponent(0).getRootPane; + catch + % Never mind + end + end + try + % If invalid RootPane - try another method... + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jFrame = get(hFig,'JavaFrame'); + jAxisComponent = get(jFrame,'AxisComponent'); + jRootPane = jAxisComponent.getParent.getParent.getRootPane; + catch + % Never mind + end + try + % If invalid RootPane, retry up to N times + tries = 10; + while isempty(jRootPane) && tries>0 % might happen if figure is still undergoing rendering... + drawnow; pause(0.001); + tries = tries - 1; + jRootPane = jFigPanel.getComponent(0).getRootPane; + end + + % If still invalid, use FigurePanelContainer which is good enough in 99% of cases... (menu/tool bars won't be accessible, though) + if isempty(jRootPane) + jRootPane = jFigPanel; + end + contentSize = [jRootPane.getWidth, jRootPane.getHeight]; + + % Try to get the ancestor FigureFrame + jRootPane = jRootPane.getTopLevelAncestor; + catch + % Never mind - FigurePanelContainer is good enough in 99% of cases... (menu/tool bars won't be accessible, though) + end + end + + %% Traverse the container hierarchy and extract the elements within + function traverseContainer(jcontainer,level,parent) + persistent figureComponentFound menuRootFound + + % Record the data for this node + %disp([repmat(' ',1,level) '<= ' char(jcontainer.toString)]) + thisIdx = length(levels) + 1; + levels(thisIdx) = level; + parentIdx(thisIdx) = parent; + try newHandle = handle(jcontainer,'callbackproperties'); catch, newHandle = handle(jcontainer); end + try handles(thisIdx) = newHandle; catch, handles = newHandle; end + try + positions(thisIdx,:) = getXY(jcontainer); + %sizes(thisIdx,:) = [jcontainer.getWidth, jcontainer.getHeight]; + catch + positions(thisIdx,:) = [0,0]; + %sizes(thisIdx,:) = [0,0]; + end + if level>0 + positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:); + if ~figureComponentFound && ... + strcmp(jcontainer.getName,'fComponentContainer') && ... + isa(jcontainer,'com.mathworks.hg.peer.FigureComponentContainer') % there are 2 FigureComponentContainers - only process one... + + % restart coordinate system, to exclude menu & toolbar areas + positions(thisIdx,:) = positions(thisIdx,:) - [jcontainer.getRootPane.getX, jcontainer.getRootPane.getY]; + figureComponentFound = true; + end + elseif level==1 + positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:); + else + % level 0 - initialize flags used later + figureComponentFound = false; + menuRootFound = false; + end + parentId = length(parentIdx); + + % Traverse Menu items, unless the 'nomenu' option was requested + if ~nomenu + try + for child = 1 : getNumMenuComponents(jcontainer) + traverseContainer(jcontainer.getMenuComponent(child-1),level+1,parentId); + end + catch + % Probably not a Menu container, but maybe a top-level JMenu, so discard duplicates + %if isa(handles(end).java,'javax.swing.JMenuBar') + if ~menuRootFound && strcmp(class(java(handles(end))),'javax.swing.JMenuBar') %faster... + if removeDuplicateNode(thisIdx) + menuRootFound = true; + return; + end + end + end + end + + % Now recursively process all this node's children (if any), except menu items if so requested + %if isa(jcontainer,'java.awt.Container') + try % try-catch is faster than checking isa(jcontainer,'java.awt.Container')... + %if jcontainer.getComponentCount, jcontainer.getComponents, end + if ~nomenu || menuBarFoundFlag || isempty(strfind(class(jcontainer),'FigureMenuBar')) + lastChildComponent = java.lang.Object; + child = 0; + while (child < jcontainer.getComponentCount) + childComponent = jcontainer.getComponent(child); + % Looping over menus sometimes causes jcontainer to get mixed up (probably a JITC bug), so identify & fix + if isequal(childComponent,lastChildComponent) + child = child + 1; + childComponent = jcontainer.getComponent(child); + end + lastChildComponent = childComponent; + %disp([repmat(' ',1,level) '=> ' num2str(child) ': ' char(class(childComponent))]) + traverseContainer(childComponent,level+1,parentId); + child = child + 1; + end + else + menuBarFoundFlag = true; % use this flag to skip further testing for FigureMenuBar + end + catch + % do nothing - probably not a container + %dispError + end + + % ...and yet another type of child traversal... + try + if ~isdeployed % prevent 'File is empty' messages in compiled apps + jc = jcontainer.java; + else + jc = jcontainer; + end + for child = 1 : jc.getChildCount + traverseContainer(jc.getChildAt(child-1),level+1,parentId); + end + catch + % do nothing - probably not a container + %dispError + end + + % TODO: Add axis (plot) component handles + end + + %% Get the XY location of a Java component + function xy = getXY(jcontainer) + % Note: getX/getY are better than get(..,'X') (mem leaks), + % ^^^^ but sometimes they fail and revert to getx.m ... + % Note2: try awtinvoke() catch is faster than checking ismethod()... + % Note3: using AWTUtilities.invokeAndWait() directly is even faster than awtinvoke()... + try %if ismethod(jcontainer,'getX') + %positions(thisIdx,:) = [jcontainer.getX, jcontainer.getY]; + cls = getClass(jcontainer); + location = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getLocation',[]),[]); + x = location.getX; + y = location.getY; + catch %else + try + x = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getX',[]),[]); + y = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getY',[]),[]); + catch + try + x = awtinvoke(jcontainer,'getX()'); + y = awtinvoke(jcontainer,'getY()'); + catch + x = get(jcontainer,'X'); + y = get(jcontainer,'Y'); + end + end + end + %positions(thisIdx,:) = [x, y]; + xy = [x,y]; + end + + %% Get the number of menu sub-elements + function numMenuComponents = getNumMenuComponents(jcontainer) + + % The following line will raise an Exception for anything except menus + numMenuComponents = jcontainer.getMenuComponentCount; + + % No error so far, so this must be a menu container... + % Note: Menu subitems are not visible until the top-level (root) menu gets initial focus... + % Try several alternatives, until we get a non-empty menu (or not...) + % TODO: Improve performance - this takes WAY too long... + if jcontainer.isTopLevelMenu && (numMenuComponents==0) + jcontainer.requestFocus; + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + jcontainer.setSelected(true); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + jcontainer.doClick; % needed in order to populate the sub-menu components + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; %pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + jcontainer.doClick; % close menu by re-clicking... + if (numMenuComponents == 0) + drawnow; %pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + end + else + % ok - found sub-items + % Note: no need to close menu since this will be done when focus moves to the FindJObj window + %jcontainer.doClick; % close menu by re-clicking... + end + end + end + jcontainer.setSelected(false); % de-select the menu + end + end + end + end + + %% Remove a specific tree node's data + function nodeRemovedFlag = removeDuplicateNode(thisIdx) + nodeRemovedFlag = false; + for idx = 1 : thisIdx-1 + if isequal(handles(idx),handles(thisIdx)) + levels(thisIdx) = []; + parentIdx(thisIdx) = []; + handles(thisIdx) = []; + positions(thisIdx,:) = []; + %sizes(thisIdx,:) = []; + nodeRemovedFlag = true; + return; + end + end + end + + %% Process optional args + function processArgs(varargin) + + % Initialize + invertFlag = false; + listing = ''; + + % Loop over all optional args + while ~isempty(varargin) && ~isempty(handles) + + % Process the arg (and all its params) + foundIdx = 1 : length(handles); + if iscell(varargin{1}), varargin{1} = varargin{1}{1}; end + if ~isempty(varargin{1}) && varargin{1}(1)=='-' + varargin{1}(1) = []; + end + switch lower(varargin{1}) + case 'not' + invertFlag = true; + case 'position' + [varargin,foundIdx] = processPositionArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'size' + [varargin,foundIdx] = processSizeArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'class' + [varargin,foundIdx] = processClassArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'property' + [varargin,foundIdx] = processPropertyArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'depth' + [varargin,foundIdx] = processDepthArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'flat' + varargin = {'depth',0, varargin{min(2:end):end}}; + [varargin,foundIdx] = processDepthArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case {'print','list'} + [varargin,listing] = processPrintArgs(varargin{:}); + case {'persist','nomenu','debug'} + % ignore - already handled in main function above + otherwise + error('YMA:findjobj:IllegalOption',['Option ' num2str(varargin{1}) ' is not a valid option. Type ''help ' mfilename ''' for the full options list.']); + end + + % If only parent-child pairs found + foundIdx = find(foundIdx); + if ~isempty(foundIdx) && isequal(parentIdx(foundIdx(2:2:end)),foundIdx(1:2:end)) + % Return just the children (the parent panels are uninteresting) + foundIdx(1:2:end) = []; + end + + % If several possible handles were found and the first is the container of the second + if length(foundIdx) == 2 && isequal(handles(foundIdx(1)).java, handles(foundIdx(2)).getParent) + % Discard the uninteresting component container + foundIdx(1) = []; + end + + % Filter the results + selectedIdx = selectedIdx(foundIdx); + handles = handles(foundIdx); + levels = levels(foundIdx); + parentIdx = parentIdx(foundIdx); + positions = positions(foundIdx,:); + + % Remove this arg and proceed to the next one + varargin(1) = []; + + end % Loop over all args + end + + %% Process 'print' option + function [varargin,listing] = processPrintArgs(varargin) + if length(varargin)<2 || ischar(varargin{2}) + % No second arg given, so use the first available element + listingContainer = handles(1); %#ok - used in evalc below + else + % Get the element to print from the specified second arg + if isnumeric(varargin{2}) && (varargin{2} == fix(varargin{2})) % isinteger doesn't work on doubles... + if (varargin{2} > 0) && (varargin{2} <= length(handles)) + listingContainer = handles(varargin{2}); %#ok - used in evalc below + elseif varargin{2} > 0 + error('YMA:findjobj:IllegalPrintFilter','Print filter index %g > number of available elements (%d)',varargin{2},length(handles)); + else + error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or positive numeric index into handles'); + end + elseif ismethod(varargin{2},'list') + listingContainer = varargin{2}; %#ok - used in evalc below + else + error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or numeric index into handles'); + end + varargin(2) = []; + end + + % use evalc() to capture output into a Matlab variable + %listing = evalc('listingContainer.list'); + + % Better solution: loop over all handles and process them one by one + listing = cell(length(handles),1); + for componentIdx = 1 : length(handles) + listing{componentIdx} = [repmat(' ',1,levels(componentIdx)) char(handles(componentIdx).toString)]; + end + end + + %% Process 'position' option + function [varargin,foundIdx] = processPositionArgs(varargin) + if length(varargin)>1 + positionFilter = varargin{2}; + %if (isjava(positionFilter) || iscom(positionFilter)) && ismethod(positionFilter,'getLocation') + try % try-catch is faster... + % Java/COM object passed - get its position + positionFilter = positionFilter.getLocation; + filterXY = [positionFilter.getX, positionFilter.getY]; + catch + if ~isscalar(positionFilter) + % position vector passed + if (length(positionFilter)>=2) && isnumeric(positionFilter) + % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left... + %positionFilter = java.awt.Point(positionFilter(1), container.getHeight - positionFilter(2)); + filterXY = [container.getX + positionFilter(1), container.getY + contentSize(2) - positionFilter(2)]; + + % Check for full Matlab position vector (x,y,w,h) + %if (length(positionFilter)==4) + % varargin{end+1} = 'size'; + % varargin{end+1} = fix(positionFilter(3:4)); + %end + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + elseif length(varargin)>2 + % x,y passed as separate arg values + if isnumeric(positionFilter) && isnumeric(varargin{3}) + % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left... + %positionFilter = java.awt.Point(positionFilter, container.getHeight - varargin{3}); + filterXY = [container.getX + positionFilter, container.getY + contentSize(2) - varargin{3}]; + varargin(3) = []; + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + end + + % Compute the required element positions in order to be eligible for a more detailed examination + % Note: based on the following constraints: 0 <= abs(elementX-filterX) + abs(elementY+elementH-filterY) < 7 + baseDeltas = [positions(:,1)-filterXY(1), positions(:,2)-filterXY(2)]; % faster than repmat()... + %baseHeight = - baseDeltas(:,2);% -abs(baseDeltas(:,1)); + %minHeight = baseHeight - 7; + %maxHeight = baseHeight + 7; + %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',positionFilter)),handles); % ARGH! - disallowed by Matlab! + %foundIdx = repmat(false,1,length(handles)); + %foundIdx(length(handles)) = false; % faster than repmat()... + foundIdx = (abs(baseDeltas(:,1)) < 7) & (abs(baseDeltas(:,2)) < 7); % & (minHeight >= 0); + %fi = find(foundIdx); + %for componentIdx = 1 : length(fi) + %foundIdx(componentIdx) = handles(componentIdx).getBounds.contains(positionFilter); + + % Search for a point no farther than 7 pixels away (prevents rounding errors) + %foundIdx(componentIdx) = handles(componentIdx).getLocationOnScreen.distanceSq(positionFilter) < 50; % fails for invisible components... + + %p = java.awt.Point(positions(componentIdx,1), positions(componentIdx,2) + handles(componentIdx).getHeight); + %foundIdx(componentIdx) = p.distanceSq(positionFilter) < 50; + + %foundIdx(componentIdx) = sum(([baseDeltas(componentIdx,1),baseDeltas(componentIdx,2)+handles(componentIdx).getHeight]).^2) < 50; + + % Following is the fastest method found to date: only eligible elements are checked in detailed + % elementHeight = handles(fi(componentIdx)).getHeight; + % foundIdx(fi(componentIdx)) = elementHeight > minHeight(fi(componentIdx)) && ... + % elementHeight < maxHeight(fi(componentIdx)); + %disp([componentIdx,elementHeight,minHeight(fi(componentIdx)),maxHeight(fi(componentIdx)),foundIdx(fi(componentIdx))]) + %end + + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'size' option + function [varargin,foundIdx] = processSizeArgs(varargin) + if length(varargin)>1 + sizeFilter = lower(varargin{2}); + %if (isjava(sizeFilter) || iscom(sizeFilter)) && ismethod(sizeFilter,'getSize') + try % try-catch is faster... + % Java/COM object passed - get its size + sizeFilter = sizeFilter.getSize; + filterWidth = sizeFilter.getWidth; + filterHeight = sizeFilter.getHeight; + catch + if ~isscalar(sizeFilter) + % size vector passed + if (length(sizeFilter)>=2) && isnumeric(sizeFilter) + %sizeFilter = java.awt.Dimension(sizeFilter(1),sizeFilter(2)); + filterWidth = sizeFilter(1); + filterHeight = sizeFilter(2); + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + elseif length(varargin)>2 + % w,h passed as separate arg values + if isnumeric(sizeFilter) && isnumeric(varargin{3}) + %sizeFilter = java.awt.Dimension(sizeFilter,varargin{3}); + filterWidth = sizeFilter; + filterHeight = varargin{3}; + varargin(3) = []; + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + end + %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',sizeFilter)),handles); % ARGH! - disallowed by Matlab! + foundIdx(length(handles)) = false; % faster than repmat()... + for componentIdx = 1 : length(handles) + %foundIdx(componentIdx) = handles(componentIdx).getSize.equals(sizeFilter); + % Allow a 2-pixel tollerance to account for non-integer pixel sizes + foundIdx(componentIdx) = abs(handles(componentIdx).getWidth - filterWidth) <= 3 && ... % faster than getSize.equals() + abs(handles(componentIdx).getHeight - filterHeight) <= 3; + end + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'class' option + function [varargin,foundIdx] = processClassArgs(varargin) + if length(varargin)>1 + classFilter = varargin{2}; + %if ismethod(classFilter,'getClass') + try % try-catch is faster... + classFilter = char(classFilter.getClass); + catch + if ~ischar(classFilter) + error('YMA:findjobj:IllegalClassFilter','Class filter must be a java object, class or string'); + end + end + + % Now convert all java classes to java.lang.Strings and compare to the requested filter string + try + foundIdx(length(handles)) = false; % faster than repmat()... + jClassFilter = java.lang.String(classFilter).toLowerCase; + for componentIdx = 1 : length(handles) + % Note: JVM 1.5's String.contains() appears slightly slower and is available only since Matlab 7.2 + foundIdx(componentIdx) = handles(componentIdx).getClass.toString.toLowerCase.indexOf(jClassFilter) >= 0; + end + catch + % Simple processing: slower since it does extra processing within opaque.char() + for componentIdx = 1 : length(handles) + % Note: using @toChar is faster but returns java String, not a Matlab char + foundIdx(componentIdx) = ~isempty(regexpi(char(handles(componentIdx).getClass),classFilter)); + end + end + + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'property' option + function [varargin,foundIdx] = processPropertyArgs(varargin) + if length(varargin)>1 + propertyName = varargin{2}; + if iscell(propertyName) + if length(propertyName) == 2 + propertyVal = propertyName{2}; + propertyName = propertyName{1}; + elseif length(propertyName) == 1 + propertyName = propertyName{1}; + else + error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}'); + end + end + if ~ischar(propertyName) + error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}'); + end + propertyName = lower(propertyName); + %foundIdx = arrayfun(@(h)isprop(h,propertyName),handles); % ARGH! - disallowed by Matlab! + foundIdx(length(handles)) = false; % faster than repmat()... + + % Split processing depending on whether a specific property value was requested (ugly but faster...) + if exist('propertyVal','var') + for componentIdx = 1 : length(handles) + try + % Find out whether this element has the specified property + % Note: findprop() and its return value schema.prop are undocumented and unsupported! + prop = findprop(handles(componentIdx),propertyName); % faster than isprop() & enables partial property names + + % If found, compare it to the actual element's property value + foundIdx(componentIdx) = ~isempty(prop) && isequal(get(handles(componentIdx),prop.Name),propertyVal); + catch + % Some Java classes have a write-only property (like LabelPeer with 'Text'), so we end up here + % In these cases, simply assume that the property value doesn't match and continue + foundIdx(componentIdx) = false; + end + end + else + for componentIdx = 1 : length(handles) + try + % Find out whether this element has the specified property + % Note: findprop() and its return value schema.prop are undocumented and unsupported! + foundIdx(componentIdx) = ~isempty(findprop(handles(componentIdx),propertyName)); + catch + foundIdx(componentIdx) = false; + end + end + end + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'depth' option + function [varargin,foundIdx] = processDepthArgs(varargin) + if length(varargin)>1 + level = varargin{2}; + if ~isnumeric(level) + error('YMA:findjobj:IllegalDepthFilter','Depth filter must be a number (=maximal element depth)'); + end + foundIdx = (levels <= level); + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Convert property data into a string + function data = charizeData(data) + if isa(data,'com.mathworks.hg.types.HGCallback') + data = get(data,'Callback'); + end + if ~ischar(data) && ~isa(data,'java.lang.String') + newData = strtrim(evalc('disp(data)')); + try + newData = regexprep(newData,' +',' '); + newData = regexprep(newData,'Columns \d+ through \d+\s',''); + newData = regexprep(newData,'Column \d+\s',''); + catch + %never mind... + end + if iscell(data) + newData = ['{ ' newData ' }']; + elseif isempty(data) + newData = ''; + elseif isnumeric(data) || islogical(data) || any(ishandle(data)) || numel(data) > 1 %&& ~isscalar(data) + newData = ['[' newData ']']; + end + data = newData; + elseif ~isempty(data) + data = ['''' data '''']; + end + end % charizeData + + %% Prepare a hierarchical callbacks table data + function setProp(list,name,value,category) + prop = eval('com.jidesoft.grid.DefaultProperty();'); % prevent JIDE alert by run-time (not load-time) evaluation + prop.setName(name); + prop.setType(java.lang.String('').getClass); + prop.setValue(value); + prop.setEditable(true); + prop.setExpert(true); + %prop.setCategory(['' category ' callbacks']); + prop.setCategory([category ' callbacks']); + list.add(prop); + end % getTreeData + + %% Prepare a hierarchical callbacks table data + function list = getTreeData(data) + list = java.util.ArrayList(); + names = regexprep(data,'([A-Z][a-z]+).*','$1'); + %hash = java.util.Hashtable; + others = {}; + for propIdx = 1 : size(data,1) + if (propIdx < size(data,1) && strcmp(names{propIdx},names{propIdx+1})) || ... + (propIdx > 1 && strcmp(names{propIdx},names{propIdx-1})) + % Child callback property + setProp(list,data{propIdx,1},data{propIdx,2},names{propIdx}); + else + % Singular callback property => Add to 'Other' category at bottom of the list + others(end+1,:) = data(propIdx,:); %#ok + end + end + for propIdx = 1 : size(others,1) + setProp(list,others{propIdx,1},others{propIdx,2},'Other'); + end + end % getTreeData + + %% Get callbacks table data + function [cbData, cbHeaders, cbTableEnabled] = getCbsData(obj, stripStdCbsFlag) + % Initialize + cbData = {'(no callbacks)'}; + cbHeaders = {'Callback name'}; + cbTableEnabled = false; + cbNames = {}; + + try + try + classHdl = classhandle(handle(obj)); + cbNames = get(classHdl.Events,'Name'); + if ~isempty(cbNames) && ~iscom(obj) %only java-based please... + cbNames = strcat(cbNames,'Callback'); + end + propNames = get(classHdl.Properties,'Name'); + catch + % Try to interpret as an MCOS class object + try + oldWarn = warning('off','MATLAB:structOnObject'); + dataFields = struct(obj); + warning(oldWarn); + catch + dataFields = get(obj); + end + propNames = fieldnames(dataFields); + end + propCbIdx = []; + if ischar(propNames), propNames={propNames}; end % handle case of a single callback + if ~isempty(propNames) + propCbIdx = find(~cellfun(@isempty,regexp(propNames,'(Fcn|Callback)$'))); + cbNames = unique([cbNames; propNames(propCbIdx)]); %#ok logical is faster but less debuggable... + end + if ~isempty(cbNames) + if stripStdCbsFlag + cbNames = stripStdCbs(cbNames); + end + if iscell(cbNames) + cbNames = sort(cbNames); + if size(cbNames,1) < size(cbNames,2) + cbNames = cbNames'; + end + end + hgHandleFlag = 0; try hgHandleFlag = ishghandle(obj); catch, end %#ok + try + obj = handle(obj,'CallbackProperties'); + catch + hgHandleFlag = 1; + end + if hgHandleFlag + % HG handles don't allow CallbackProperties - search only for *Fcn + %cbNames = propNames(propCbIdx); + end + if iscom(obj) + cbs = obj.eventlisteners; + if ~isempty(cbs) + cbNamesRegistered = cbs(:,1); + cbData = setdiff(cbNames,cbNamesRegistered); + %cbData = charizeData(cbData); + if size(cbData,2) > size(cbData(1)) + cbData = cbData'; + end + cbData = [cbData, cellstr(repmat(' ',length(cbData),1))]; + cbData = [cbData; cbs]; + [sortedNames, sortedIdx] = sort(cbData(:,1)); + sortedCbs = cellfun(@charizeData,cbData(sortedIdx,2),'un',0); + cbData = [sortedNames, sortedCbs]; + else + cbData = [cbNames, cellstr(repmat(' ',length(cbNames),1))]; + end + elseif iscell(cbNames) + cbNames = sort(cbNames); + %cbData = [cbNames, get(obj,cbNames)']; + cbData = cbNames; + oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty'); + warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty'); + for idx = 1 : length(cbNames) + try + cbData{idx,2} = charizeData(get(obj,cbNames{idx})); + catch + cbData{idx,2} = '(callback value inaccessible)'; + end + end + warning(oldWarn); + else % only one event callback + %cbData = {cbNames, get(obj,cbNames)'}; + %cbData{1,2} = charizeData(cbData{1,2}); + try + cbData = {cbNames, charizeData(get(obj,cbNames))}; + catch + cbData = {cbNames, '(callback value inaccessible)'}; + end + end + cbHeaders = {'Callback name','Callback value'}; + cbTableEnabled = true; + end + catch + % never mind - use default (empty) data + end + end % getCbsData + + %% Get relative (0.0-1.0) divider location + function divLocation = getRalativeDivlocation(jDiv) + divLocation = jDiv.getDividerLocation; + if divLocation > 1 % i.e. [pixels] + visibleRect = jDiv.getVisibleRect; + if jDiv.getOrientation == 0 % vertical + start = visibleRect.getY; + extent = visibleRect.getHeight - start; + else + start = visibleRect.getX; + extent = visibleRect.getWidth - start; + end + divLocation = (divLocation - start) / extent; + end + end % getRalativeDivlocation + + %% Try to set a treenode icon based on a container's icon + function setTreeNodeIcon(treenode,container) + try + iconImage = []; + iconImage = container.getIcon; + if ~isempty(findprop(handle(iconImage),'Image')) % get(iconImage,'Image') is easier but leaks memory... + iconImage = iconImage.getImage; + else + a=b; %#ok cause an error + end + catch + try + iconImage = container.getIconImage; + catch + try + if ~isempty(iconImage) + ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment; + gd = ge.getDefaultScreenDevice; + gc = gd.getDefaultConfiguration; + image = gc.createCompatibleImage(iconImage.getIconWidth, iconImage.getIconHeight); % a BufferedImage object + g = image.createGraphics; + iconImage.paintIcon([], g, 0, 0); + g.dispose; + iconImage = image; + end + catch + % never mind... + end + end + end + if ~isempty(iconImage) + iconImage = setIconSize(iconImage); + treenode.setIcon(iconImage); + end + end % setTreeNodeIcon + + %% Present the object hierarchy tree + function presentObjectTree() + persistent lastVersionCheck + if isempty(lastVersionCheck), lastVersionCheck = now-1; end + + import java.awt.* + import javax.swing.* + hTreeFig = findall(0,'tag','findjobjFig'); + iconpath = [matlabroot, '/toolbox/matlab/icons/']; + cbHideStd = 0; % Initial state of the cbHideStdCbs checkbox + if isempty(hTreeFig) + % Prepare the figure + hTreeFig = figure('tag','findjobjFig','menuBar','none','toolBar','none','Name','FindJObj','NumberTitle','off','handleVisibility','off','IntegerHandle','off'); + figIcon = ImageIcon([iconpath 'tool_legend.gif']); + drawnow; + try + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jTreeFig = mde.getClient('FindJObj').getTopLevelAncestor; + jTreeFig.setIcon(figIcon); + catch + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jTreeFig = get(hTreeFig,'JavaFrame'); + jTreeFig.setFigureIcon(figIcon); + end + vsplitPaneLocation = 0.8; + hsplitPaneLocation = 0.5; + else + % Remember cbHideStdCbs checkbox & dividers state for later + userdata = get(hTreeFig, 'userdata'); + try cbHideStd = userdata.cbHideStdCbs.isSelected; catch, end %#ok + try + vsplitPaneLocation = getRalativeDivlocation(userdata.vsplitPane); + hsplitPaneLocation = getRalativeDivlocation(userdata.hsplitPane); + catch + vsplitPaneLocation = 0.8; + hsplitPaneLocation = 0.5; + end + + % Clear the figure and redraw + clf(hTreeFig); + figure(hTreeFig); % bring to front + end + + % Traverse all HG children, if root container was a HG handle + if ishghandle(origContainer) %&& ~isequal(origContainer,container) + traverseHGContainer(origContainer,0,0); + end + + % Prepare the tree pane + warning('off','MATLAB:uitreenode:MigratingFunction'); % R2008b compatibility + warning('off','MATLAB:uitreenode:DeprecatedFunction'); % R2008a compatibility + tree_h = com.mathworks.hg.peer.UITreePeer; + try tree_h = javaObjectEDT(tree_h); catch, end + tree_hh = handle(tree_h,'CallbackProperties'); + hasChildren = sum(allParents==1) > 1; + icon = [iconpath 'upfolder.gif']; + [rootName, rootTitle] = getNodeName(container); + try + root = uitreenode('v0', handle(container), rootName, icon, ~hasChildren); + catch % old matlab version don't have the 'v0' option + root = uitreenode(handle(container), rootName, icon, ~hasChildren); + end + setTreeNodeIcon(root,container); % constructor must accept a char icon unfortunately, so need to do this afterwards... + if ~isempty(rootTitle) + set(hTreeFig, 'Name',['FindJObj - ' char(rootTitle)]); + end + nodedata.idx = 1; + nodedata.obj = container; + set(root,'userdata',nodedata); + root.setUserObject(container); + setappdata(root,'childHandle',container); + tree_h.setRoot(root); + treePane = tree_h.getScrollPane; + treePane.setMinimumSize(Dimension(50,50)); + jTreeObj = treePane.getViewport.getComponent(0); + jTreeObj.setShowsRootHandles(true) + jTreeObj.getSelectionModel.setSelectionMode(javax.swing.tree.TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); + %jTreeObj.setVisible(0); + %jTreeObj.getCellRenderer.setLeafIcon([]); + %jTreeObj.getCellRenderer.setOpenIcon(figIcon); + %jTreeObj.getCellRenderer.setClosedIcon([]); + treePanel = JPanel(BorderLayout); + treePanel.add(treePane, BorderLayout.CENTER); + progressBar = JProgressBar(0); + progressBar.setMaximum(length(allHandles) + length(hg_handles)); % = # of all nodes + treePanel.add(progressBar, BorderLayout.SOUTH); + + % Prepare the image pane +%disable for now, until we get it working... +%{ + try + hFig = ancestor(origContainer,'figure'); + [cdata, cm] = getframe(hFig); %#ok cm unused + tempfname = [tempname '.png']; + imwrite(cdata,tempfname); % don't know how to pass directly to BufferedImage, so use disk... + jImg = javax.imageio.ImageIO.read(java.io.File(tempfname)); + try delete(tempfname); catch end + imgPanel = JPanel(); + leftPanel = JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, imgPanel); + leftPanel.setOneTouchExpandable(true); + leftPanel.setContinuousLayout(true); + leftPanel.setResizeWeight(0.8); + catch + leftPanel = treePanel; + end +%} + leftPanel = treePanel; + + % Prepare the inspector pane + classNameLabel = JLabel([' ' char(class(container))]); + classNameLabel.setForeground(Color.blue); + updateNodeTooltip(container, classNameLabel); + inspectorPanel = JPanel(BorderLayout); + inspectorPanel.add(classNameLabel, BorderLayout.NORTH); + % TODO: Maybe uncomment the following when we add the HG tree - in the meantime it's unused (java properties are un-groupable) + %objReg = com.mathworks.services.ObjectRegistry.getLayoutRegistry; + %toolBar = awtinvoke('com.mathworks.mlwidgets.inspector.PropertyView$ToolBarStyle','valueOf(Ljava.lang.String;)','GROUPTOOLBAR'); + %inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView(objReg, toolBar); + inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView; + identifiers = disableDbstopError; %#ok "dbstop if error" causes inspect.m to croak due to a bug - so workaround + inspectorPane.setObject(container); + inspectorPane.setAutoUpdate(true); + % TODO: Add property listeners + % TODO: Display additional props + inspectorTable = inspectorPane; + try + while ~isa(inspectorTable,'javax.swing.JTable') + inspectorTable = inspectorTable.getComponent(0); + end + catch + % R2010a + inspectorTable = inspectorPane.getComponent(0).getScrollPane.getViewport.getComponent(0); + end + toolTipText = 'hover mouse over the red classname above to see the full list of properties'; + inspectorTable.setToolTipText(toolTipText); + jideTableUtils = []; + try + % Try JIDE features - see http://www.jidesoft.com/products/JIDE_Grids_Developer_Guide.pdf + com.mathworks.mwswing.MJUtilities.initJIDE; + jideTableUtils = eval('com.jidesoft.grid.TableUtils;'); % prevent JIDE alert by run-time (not load-time) evaluation + jideTableUtils.autoResizeAllColumns(inspectorTable); + inspectorTable.setRowAutoResizes(true); + inspectorTable.getModel.setShowExpert(1); + catch + % JIDE is probably unavailable - never mind... + end + inspectorPanel.add(inspectorPane, BorderLayout.CENTER); + % TODO: Add data update listeners + + % Prepare the callbacks pane + callbacksPanel = JPanel(BorderLayout); + stripStdCbsFlag = true; % initial value + [cbData, cbHeaders, cbTableEnabled] = getCbsData(container, stripStdCbsFlag); + %{ + %classHdl = classhandle(handle(container)); + %eventNames = get(classHdl.Events,'Name'); + %if ~isempty(eventNames) + % cbNames = sort(strcat(eventNames,'Callback')); + % try + % cbData = [cbNames, get(container,cbNames)']; + % catch + % % R2010a + % cbData = cbNames; + % if isempty(cbData) + % cbData = {}; + % elseif ~iscell(cbData) + % cbData = {cbData}; + % end + % for idx = 1 : length(cbNames) + % cbData{idx,2} = get(container,cbNames{idx}); + % end + % end + % cbTableEnabled = true; + %else + % cbData = {'(no callbacks)',''}; + % cbTableEnabled = false; + %end + %cbHeaders = {'Callback name','Callback value'}; + %} + try + % Use JideTable if available on this system + %callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); %#ok + %callbacksTable = eval('com.jidesoft.grid.PropertyTable(callbacksTableModel);'); % prevent JIDE alert by run-time (not load-time) evaluation + try + list = getTreeData(cbData); %#ok + model = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Auto-expand if only one category + if model.getRowCount==1 % length(model.getCategories)==1 fails for some unknown reason... + model.expandFirstLevel; + end + + %callbacksTable = eval('com.jidesoft.grid.TreeTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + callbacksTable = eval('com.jidesoft.grid.PropertyTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + %callbacksTable.expandFirstLevel; + callbacksTable.setShowsRootHandles(true); + callbacksTable.setShowTreeLines(false); + %callbacksTable.setShowNonEditable(0); %=SHOW_NONEDITABLE_NEITHER + callbacksPane = eval('com.jidesoft.grid.PropertyPane(callbacksTable);'); % prevent JIDE alert by run-time (not load-time) evaluation + callbacksPane.setShowDescription(false); + catch + callbacksTable = eval('com.jidesoft.grid.TreeTable(cbData,cbHeaders);'); % prevent JIDE alert by run-time (not load-time) evaluation + end + callbacksTable.setRowAutoResizes(true); + callbacksTable.setColumnAutoResizable(true); + callbacksTable.setColumnResizable(true); + jideTableUtils.autoResizeAllColumns(callbacksTable); + callbacksTable.setTableHeader([]); % hide the column headers since now we can resize columns with the gridline + callbacksLabel = JLabel(' Callbacks:'); % The column headers are replaced with a header label + callbacksLabel.setForeground(Color.blue); + %callbacksPanel.add(callbacksLabel, BorderLayout.NORTH); + + % Add checkbox to show/hide standard callbacks + callbacksTopPanel = JPanel; + callbacksTopPanel.setLayout(BoxLayout(callbacksTopPanel, BoxLayout.LINE_AXIS)); + callbacksTopPanel.add(callbacksLabel); + callbacksTopPanel.add(Box.createHorizontalGlue); + jcb = JCheckBox('Hide standard callbacks', cbHideStd); + set(handle(jcb,'CallbackProperties'), 'ActionPerformedCallback',{@cbHideStdCbs_Callback,callbacksTable}); + try + set(jcb, 'userdata',callbacksTable, 'tooltip','Hide standard Swing callbacks - only component-specific callbacks will be displayed'); + catch + jcb.setToolTipText('Hide standard Swing callbacks - only component-specific callbacks will be displayed'); + %setappdata(jcb,'userdata',callbacksTable); + end + callbacksTopPanel.add(jcb); + callbacksPanel.add(callbacksTopPanel, BorderLayout.NORTH); + catch + % Otherwise, use a standard Swing JTable (keep the headers to enable resizing) + callbacksTable = JTable(cbData,cbHeaders); + end + cbToolTipText = 'Callbacks may be ''strings'', @funcHandle or {@funcHandle,arg1,...}'; + callbacksTable.setToolTipText(cbToolTipText); + callbacksTable.setGridColor(inspectorTable.getGridColor); + cbNameTextField = JTextField; + cbNameTextField.setEditable(false); % ensure that the callback names are not modified... + cbNameCellEditor = DefaultCellEditor(cbNameTextField); + cbNameCellEditor.setClickCountToStart(intmax); % i.e, never enter edit mode... + callbacksTable.getColumnModel.getColumn(0).setCellEditor(cbNameCellEditor); + if ~cbTableEnabled + try callbacksTable.getColumnModel.getColumn(1).setCellEditor(cbNameCellEditor); catch, end + end + hModel = callbacksTable.getModel; + set(handle(hModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,container,callbacksTable}); + %set(hModel, 'UserData',container); + try + cbScrollPane = callbacksPane; %JScrollPane(callbacksPane); + %cbScrollPane.setHorizontalScrollBarPolicy(cbScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + catch + cbScrollPane = JScrollPane(callbacksTable); + cbScrollPane.setVerticalScrollBarPolicy(cbScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + end + callbacksPanel.add(cbScrollPane, BorderLayout.CENTER); + callbacksPanel.setToolTipText(cbToolTipText); + + % Prepare the top-bottom JSplitPanes + vsplitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, inspectorPanel, callbacksPanel); + vsplitPane.setOneTouchExpandable(true); + vsplitPane.setContinuousLayout(true); + vsplitPane.setResizeWeight(0.8); + + % Prepare the left-right JSplitPane + hsplitPane = JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, vsplitPane); + hsplitPane.setOneTouchExpandable(true); + hsplitPane.setContinuousLayout(true); + hsplitPane.setResizeWeight(0.6); + pos = getpixelposition(hTreeFig); + + % Prepare the bottom pane with all buttons + lowerPanel = JPanel(FlowLayout); + blogUrlLabel = 'Undocumented
    Matlab.com
    '; + jWebsite = createJButton(blogUrlLabel, @btWebsite_Callback, 'Visit the UndocumentedMatlab.com blog'); + jWebsite.setContentAreaFilled(0); + lowerPanel.add(jWebsite); + lowerPanel.add(createJButton('Refresh
    tree', {@btRefresh_Callback, origContainer, hTreeFig}, 'Rescan the component tree, from the root down')); + lowerPanel.add(createJButton('Export to
    workspace', {@btExport_Callback, jTreeObj, classNameLabel}, 'Export the selected component handles to workspace variable findjobj_hdls')); + lowerPanel.add(createJButton('Request
    focus', {@btFocus_Callback, jTreeObj, root}, 'Set the focus on the first selected component')); + lowerPanel.add(createJButton('Inspect
    object', {@btInspect_Callback, jTreeObj, root}, 'View the signature of all methods supported by the first selected component')); + lowerPanel.add(createJButton('Check for
    updates', {@btCheckFex_Callback}, 'Check the MathWorks FileExchange for the latest version of FindJObj')); + + % Display everything on-screen + globalPanel = JPanel(BorderLayout); + globalPanel.add(hsplitPane, BorderLayout.CENTER); + globalPanel.add(lowerPanel, BorderLayout.SOUTH); + [obj, hcontainer] = javacomponent(globalPanel, [0,0,pos(3:4)], hTreeFig); + set(hcontainer,'units','normalized'); + drawnow; + hsplitPane.setDividerLocation(hsplitPaneLocation); % this only works after the JSplitPane is displayed... + vsplitPane.setDividerLocation(vsplitPaneLocation); % this only works after the JSplitPane is displayed... + %restoreDbstopError(identifiers); + + % Refresh & resize the screenshot thumbnail +%disable for now, until we get it working... +%{ + try + hAx = axes('Parent',hTreeFig, 'units','pixels', 'position',[10,10,250,150], 'visible','off'); + axis(hAx,'image'); + image(cdata,'Parent',hAx); + axis(hAx,'off'); + set(hAx,'UserData',cdata); + set(imgPanel, 'ComponentResizedCallback',{@resizeImg, hAx}, 'UserData',lowerPanel); + imgPanel.getGraphics.drawImage(jImg, 0, 0, []); + catch + % Never mind... + end +%} + % If all handles were selected (i.e., none were filtered) then only select the first + if (length(selectedIdx) == length(allHandles)) && ~isempty(selectedIdx) + selectedIdx = 1; + end + + % Store handles for callback use + userdata.handles = allHandles; + userdata.levels = allLevels; + userdata.parents = allParents; + userdata.hg_handles = hg_handles; + userdata.hg_levels = hg_levels; + userdata.hg_parents = hg_parentIdx; + userdata.initialIdx = selectedIdx; + userdata.userSelected = false; % Indicates the user has modified the initial selections + userdata.inInit = true; + userdata.jTree = jTreeObj; + userdata.jTreePeer = tree_h; + userdata.vsplitPane = vsplitPane; + userdata.hsplitPane = hsplitPane; + userdata.classNameLabel = classNameLabel; + userdata.inspectorPane = inspectorPane; + userdata.callbacksTable = callbacksTable; + userdata.jideTableUtils = jideTableUtils; + try + userdata.cbHideStdCbs = jcb; + catch + userdata.cbHideStdCbs = []; + end + + % Update userdata for use in callbacks + try + set(tree_h,'userdata',userdata); + catch + setappdata(handle(tree_h),'userdata',userdata); + end + try + set(callbacksTable,'userdata',userdata); + catch + setappdata(callbacksTable,'userdata',userdata); + end + set(hTreeFig,'userdata',userdata); + + % Select the root node if requested + % Note: we must do so here since all other nodes except the root are processed by expandNode + if any(selectedIdx==1) + tree_h.setSelectedNode(root); + end + + % Set the initial cbHideStdCbs state + try + if jcb.isSelected + drawnow; + evd.getSource.isSelected = jcb.isSelected; + cbHideStdCbs_Callback(jcb,evd,callbacksTable); + end + catch + % never mind... + end + + % Set the callback functions + set(tree_hh, 'NodeExpandedCallback', {@nodeExpanded, tree_h}); + set(tree_hh, 'NodeSelectedCallback', {@nodeSelected, tree_h}); + + % Set the tree mouse-click callback + % Note: default actions (expand/collapse) will still be performed? + % Note: MousePressedCallback is better than MouseClickedCallback + % since it fires immediately when mouse button is pressed, + % without waiting for its release, as MouseClickedCallback does + handleTree = tree_h.getScrollPane; + jTreeObj = handleTree.getViewport.getComponent(0); + jTreeObjh = handle(jTreeObj,'CallbackProperties'); + set(jTreeObjh, 'MousePressedCallback', {@treeMousePressedCallback,tree_h}); % context (right-click) menu + set(jTreeObjh, 'MouseMovedCallback', @treeMouseMovedCallback); % mouse hover tooltips + + % Update userdata + userdata.inInit = false; + try + set(tree_h,'userdata',userdata); + catch + setappdata(handle(tree_h),'userdata',userdata); + end + set(hTreeFig,'userdata',userdata); + + % Pre-expand all rows + %treePane.setVisible(false); + expandNode(progressBar, jTreeObj, tree_h, root, 0); + %treePane.setVisible(true); + %jTreeObj.setVisible(1); + + % Hide the progressbar now that we've finished expanding all rows + try + hsplitPane.getLeftComponent.setTopComponent(treePane); + catch + % Probably not a vSplitPane on the left... + hsplitPane.setLeftComponent(treePane); + end + hsplitPane.setDividerLocation(hsplitPaneLocation); % need to do it again... + + % Set keyboard focus on the tree + jTreeObj.requestFocus; + drawnow; + + % Check for a newer version (only in non-deployed mode, and only twice a day) + if ~isdeployed && now-lastVersionCheck > 0.5 + checkVersion(); + lastVersionCheck = now; + end + + % Reset the last error + lasterr(''); %#ok + end + + %% Rresize image pane + function resizeImg(varargin) %#ok - unused (TODO: waiting for img placement fix...) + try + hPanel = varargin{1}; + hAx = varargin{3}; + lowerPanel = get(hPanel,'UserData'); + newJPos = cell2mat(get(hPanel,{'X','Y','Width','Height'})); + newMPos = [1,get(lowerPanel,'Height'),newJPos(3:4)]; + set(hAx, 'units','pixels', 'position',newMPos, 'Visible','on'); + uistack(hAx,'top'); % no good... + set(hPanel,'Opaque','off'); % also no good... + catch + % Never mind... + dispError + end + return; + end + + %% "dbstop if error" causes inspect.m to croak due to a bug - so workaround by temporarily disabling this dbstop + function identifiers = disableDbstopError + dbStat = dbstatus; + idx = find(strcmp({dbStat.cond},'error')); + identifiers = [dbStat(idx).identifier]; + if ~isempty(idx) + dbclear if error; + msgbox('''dbstop if error'' had to be disabled due to a Matlab bug that would have caused Matlab to crash.', 'FindJObj', 'warn'); + end + end + + %% Restore any previous "dbstop if error" + function restoreDbstopError(identifiers) %#ok + for itemIdx = 1 : length(identifiers) + eval(['dbstop if error ' identifiers{itemIdx}]); + end + end + + %% Recursively expand all nodes (except toolbar/menubar) in startup + function expandNode(progressBar, tree, tree_h, parentNode, parentRow) + try + if nargin < 5 + parentPath = javax.swing.tree.TreePath(parentNode.getPath); + parentRow = tree.getRowForPath(parentPath); + end + tree.expandRow(parentRow); + progressBar.setValue(progressBar.getValue+1); + numChildren = parentNode.getChildCount; + if (numChildren == 0) + pause(0.0002); % as short as possible... + drawnow; + end + nodesToUnExpand = {'FigureMenuBar','MLMenuBar','MJToolBar','Box','uimenu','uitoolbar','ScrollBar'}; + numChildren = parentNode.getChildCount; + for childIdx = 0 : numChildren-1 + childNode = parentNode.getChildAt(childIdx); + + % Pre-select the node based upon the user's FINDJOBJ filters + try + nodedata = get(childNode, 'userdata'); + try + userdata = get(tree_h, 'userdata'); + catch + userdata = getappdata(handle(tree_h), 'userdata'); + end + %fprintf('%d - %s\n',nodedata.idx,char(nodedata.obj)) + if ~ishghandle(nodedata.obj) && ~userdata.userSelected && any(userdata.initialIdx == nodedata.idx) + pause(0.0002); % as short as possible... + drawnow; + if isempty(tree_h.getSelectedNodes) + tree_h.setSelectedNode(childNode); + else + newSelectedNodes = [tree_h.getSelectedNodes, childNode]; + tree_h.setSelectedNodes(newSelectedNodes); + end + end + catch + % never mind... + dispError + end + + % Expand child node if not leaf & not toolbar/menubar + if childNode.isLeafNode + + % This is a leaf node, so simply update the progress-bar + progressBar.setValue(progressBar.getValue+1); + + else + % Expand all non-leaves + expandNode(progressBar, tree, tree_h, childNode); + + % Re-collapse toolbar/menubar etc., and also invisible containers + % Note: if we simply did nothing, progressbar would not have been updated... + try + childHandle = getappdata(childNode,'childHandle'); %=childNode.getUserObject + visible = childHandle.isVisible; + catch + visible = 1; + end + visible = visible && isempty(findstr(get(childNode,'Name'),'color="gray"')); + %if any(strcmp(childNode.getName,nodesToUnExpand)) + %name = char(childNode.getName); + if any(cellfun(@(s)~isempty(strmatch(s,char(childNode.getName))),nodesToUnExpand)) || ~visible + childPath = javax.swing.tree.TreePath(childNode.getPath); + childRow = tree.getRowForPath(childPath); + tree.collapseRow(childRow); + end + end + end + catch + % never mind... + dispError + end + end + + %% Create utility buttons + function hButton = createJButton(nameStr, handler, toolTipText) + try + jButton = javax.swing.JButton(['

    ' nameStr]); + jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); + jButton.setToolTipText(toolTipText); + try + minSize = jButton.getMinimumSize; + catch + minSize = jButton.getMinimumSize; % for HG2 - strange indeed that this is needed! + end + jButton.setMinimumSize(java.awt.Dimension(minSize.getWidth,35)); + hButton = handle(jButton,'CallbackProperties'); + set(hButton,'ActionPerformedCallback',handler); + catch + % Never mind... + a= 1; + end + end + + %% Flash a component off/on for the specified duration + % note: starts with 'on'; if numTimes is odd then ends with 'on', otherwise with 'off' + function flashComponent(jComps,delaySecs,numTimes) + persistent redBorder redBorderPanels + try + % Handle callback data from right-click (context-menu) + if iscell(numTimes) + [jComps,delaySecs,numTimes] = deal(numTimes{:}); + end + + if isempty(redBorder) % reuse if possible + redBorder = javax.swing.border.LineBorder(java.awt.Color.red,2,0); + end + for compIdx = 1 : length(jComps) + try + oldBorder{compIdx} = jComps(compIdx).getBorder; %#ok grow + catch + oldBorder{compIdx} = []; %#ok grow + end + isSettable(compIdx) = ismethod(jComps(compIdx),'setBorder'); %#ok grow + if isSettable(compIdx) + try + % some components prevent border modification: + oldBorderFlag = jComps(compIdx).isBorderPainted; + if ~oldBorderFlag + jComps(compIdx).setBorderPainted(1); + isSettable(compIdx) = jComps(compIdx).isBorderPainted; %#ok grow + jComps(compIdx).setBorderPainted(oldBorderFlag); + end + catch + % do nothing... + end + end + if compIdx > length(redBorderPanels) + redBorderPanels{compIdx} = javax.swing.JPanel; + redBorderPanels{compIdx}.setBorder(redBorder); + redBorderPanels{compIdx}.setOpaque(0); % transparent interior, red border + end + try + redBorderPanels{compIdx}.setBounds(jComps(compIdx).getBounds); + catch + % never mind - might be an HG handle + end + end + for idx = 1 : 2*numTimes + if idx>1, pause(delaySecs); end % don't pause at start + visible = mod(idx,2); + for compIdx = 1 : length(jComps) + try + jComp = jComps(compIdx); + + % Prevent Matlab crash (java buffer overflow...) + if isa(jComp,'com.mathworks.mwswing.desk.DTSplitPane') || ... + isa(jComp,'com.mathworks.mwswing.MJSplitPane') + continue; + + % HG handles are highlighted by setting their 'Selected' property + elseif isa(jComp,'uimenu') || isa(jComp,'matlab.ui.container.Menu') + if visible + oldColor = get(jComp,'ForegroundColor'); + setappdata(jComp,'findjobj_oldColor',oldColor); + set(jComp,'ForegroundColor','red'); + else + oldColor = getappdata(jComp,'findjobj_oldColor'); + set(jComp,'ForegroundColor',oldColor); + rmappdata(jComp,'ForegroundColor'); + end + + elseif ishghandle(jComp) + if visible + set(jComp,'Selected','on'); + else + set(jComp,'Selected','off'); + end + + else %if isjava(jComp) + + jParent = jComps(compIdx).getParent; + + % Most Java components allow modifying their borders + if isSettable(compIdx) + if visible + jComp.setBorder(redBorder); + try jComp.setBorderPainted(1); catch, end %#ok + else %if ~isempty(oldBorder{compIdx}) + jComp.setBorder(oldBorder{compIdx}); + end + jComp.repaint; + + % The other Java components are highlighted by a transparent red-border + % panel that is placed on top of them in their parent's space + elseif ~isempty(jParent) + if visible + jParent.add(redBorderPanels{compIdx}); + jParent.setComponentZOrder(redBorderPanels{compIdx},0); + else + jParent.remove(redBorderPanels{compIdx}); + end + jParent.repaint + end + end + catch + % never mind - try the next component (if any) + end + end + drawnow; + end + catch + % never mind... + dispError; + end + return; % debug point + end % flashComponent + + %% Select tree node + function nodeSelected(src, evd, tree) %#ok + try + if iscell(tree) + [src,node] = deal(tree{:}); + else + node = evd.getCurrentNode; + end + %nodeHandle = node.getUserObject; + nodedata = get(node,'userdata'); + nodeHandle = nodedata.obj; + try + userdata = get(src,'userdata'); + catch + try + userdata = getappdata(java(src),'userdata'); + catch + userdata = getappdata(src,'userdata'); + end + if isempty(userdata) + try userdata = get(java(src),'userdata'); catch, end + end + end + if ~isempty(nodeHandle) && ~isempty(userdata) + numSelections = userdata.jTree.getSelectionCount; + selectionPaths = userdata.jTree.getSelectionPaths; + if (numSelections == 1) + % Indicate that the user has modified the initial selection (except if this was an initial auto-selected node) + if ~userdata.inInit + userdata.userSelected = true; + try + set(src,'userdata',userdata); + catch + try + setappdata(java(src),'userdata',userdata); + catch + setappdata(src,'userdata',userdata); + end + end + end + + % Update the fully-qualified class name label + numInitialIdx = length(userdata.initialIdx); + thisHandle = nodeHandle; + try + if ~ishghandle(thisHandle) + thisHandle = java(nodeHandle); + end + catch + % never mind... + end + if ~userdata.inInit || (numInitialIdx == 1) + userdata.classNameLabel.setText([' ' char(class(thisHandle))]); + else + userdata.classNameLabel.setText([' ' num2str(numInitialIdx) 'x handles (some handles hidden by unexpanded tree nodes)']); + end + if ishghandle(thisHandle) + userdata.classNameLabel.setText(userdata.classNameLabel.getText.concat(' (HG handle)')); + end + userdata.inspectorPane.dispose; % remove props listeners - doesn't work... + updateNodeTooltip(nodeHandle, userdata.classNameLabel); + + % Update the data properties inspector pane + % Note: we can't simply use the evd nodeHandle, because this node might have been DE-selected with only one other node left selected... + %nodeHandle = selectionPaths(1).getLastPathComponent.getUserObject; + nodedata = get(selectionPaths(1).getLastPathComponent,'userdata'); + nodeHandle = nodedata.obj; + %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround + userdata.inspectorPane.setObject(thisHandle); + + % Update the callbacks table + try + stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs'); + [cbData, cbHeaders, cbTableEnabled] = getCbsData(nodeHandle, stripStdCbsFlag); %#ok cbTableEnabled unused + try + % Use JideTable if available on this system + list = getTreeData(cbData); %#ok + callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Expand if only one category + if length(callbacksTableModel.getCategories)==1 + callbacksTableModel.expandFirstLevel; + end + catch + callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); + end + set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,nodeHandle,userdata.callbacksTable}); + %set(callbacksTableModel, 'UserData',nodeHandle); + userdata.callbacksTable.setModel(callbacksTableModel) + userdata.callbacksTable.setRowAutoResizes(true); + userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable); + catch + % never mind... + %dispError + end + pause(0.005); + drawnow; + %restoreDbstopError(identifiers); + + % Highlight the selected object (if visible) + flashComponent(nodeHandle,0.2,3); + + elseif (numSelections > 1) % Multiple selections + + % Get the list of all selected nodes + jArray = javaArray('java.lang.Object', numSelections); + toolTipStr = ''; + sameClassFlag = true; + for idx = 1 : numSelections + %jArray(idx) = selectionPaths(idx).getLastPathComponent.getUserObject; + nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata'); + try + if ishghandle(nodedata.obj) + if idx==1 + jArray = nodedata.obj; + else + jArray(idx) = nodedata.obj; + end + else + jArray(idx) = java(nodedata.obj); + end + catch + jArray(idx) = nodedata.obj; + end + toolTipStr = [toolTipStr ' ' class(jArray(idx)) ' ']; %#ok grow + if (idx < numSelections), toolTipStr = [toolTipStr '
    ']; end %#ok grow + try + if (idx > 1) && sameClassFlag && ~isequal(jArray(idx).getClass,jArray(1).getClass) + sameClassFlag = false; + end + catch + if (idx > 1) && sameClassFlag && ~isequal(class(jArray(idx)),class(jArray(1))) + sameClassFlag = false; + end + end + end + toolTipStr = [toolTipStr '']; + + % Update the fully-qualified class name label + if sameClassFlag + classNameStr = class(jArray(1)); + else + classNameStr = 'handle'; + end + if all(ishghandle(jArray)) + if strcmp(classNameStr,'handle') + classNameStr = 'HG handles'; + else + classNameStr = [classNameStr ' (HG handles)']; + end + end + classNameStr = [' ' num2str(numSelections) 'x ' classNameStr]; + userdata.classNameLabel.setText(classNameStr); + userdata.classNameLabel.setToolTipText(toolTipStr); + + % Update the data properties inspector pane + %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround + if isjava(jArray) + jjArray = jArray; + else + jjArray = javaArray('java.lang.Object', numSelections); + for idx = 1 : numSelections + jjArray(idx) = java(jArray(idx)); + end + end + userdata.inspectorPane.getRegistry.setSelected(jjArray, true); + + % Update the callbacks table + try + % Get intersecting callback names & values + stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs'); + [cbData, cbHeaders, cbTableEnabled] = getCbsData(jArray(1), stripStdCbsFlag); %#ok cbHeaders & cbTableEnabled unused + if ~isempty(cbData) + cbNames = cbData(:,1); + for idx = 2 : length(jArray) + [cbData2, cbHeaders2] = getCbsData(jArray(idx), stripStdCbsFlag); %#ok cbHeaders2 unused + if ~isempty(cbData2) + newCbNames = cbData2(:,1); + [cbNames, cbIdx, cb2Idx] = intersect(cbNames,newCbNames); %#ok cb2Idx unused + cbData = cbData(cbIdx,:); + for cbIdx = 1 : length(cbNames) + newIdx = find(strcmp(cbNames{cbIdx},newCbNames)); + if ~isequal(cbData2,cbData) && ~isequal(cbData2{newIdx,2}, cbData{cbIdx,2}) + cbData{cbIdx,2} = ''; + end + end + else + cbData = cbData([],:); %=empty cell array + end + if isempty(cbData) + break; + end + end + end + cbHeaders = {'Callback name','Callback value'}; + try + % Use JideTable if available on this system + list = getTreeData(cbData); %#ok + callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Expand if only one category + if length(callbacksTableModel.getCategories)==1 + callbacksTableModel.expandFirstLevel; + end + catch + callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); + end + set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,jArray,userdata.callbacksTable}); + %set(callbacksTableModel, 'UserData',jArray); + userdata.callbacksTable.setModel(callbacksTableModel) + userdata.callbacksTable.setRowAutoResizes(true); + userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable); + catch + % never mind... + dispError + end + + pause(0.005); + drawnow; + %restoreDbstopError(identifiers); + + % Highlight the selected objects (if visible) + flashComponent(jArray,0.2,3); + end + + % TODO: Auto-highlight selected object (?) + %nodeHandle.requestFocus; + end + catch + dispError + end + end + + %% IFF utility function for annonymous cellfun funcs + function result = iff(test,trueVal,falseVal) %#ok + try + if test + result = trueVal; + else + result = falseVal; + end + catch + result = false; + end + end + + %% Get an HTML representation of the object's properties + function dataFieldsStr = getPropsHtml(nodeHandle, dataFields) + try + % Get a text representation of the fieldnames & values + undefinedStr = ''; + hiddenStr = ''; + dataFieldsStr = ''; % just in case the following croaks... + if isempty(dataFields) + return; + end + dataFieldsStr = evalc('disp(dataFields)'); + if dataFieldsStr(end)==char(10), dataFieldsStr=dataFieldsStr(1:end-1); end + + % Strip out callbacks + dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*Callback(Data)?:[^\n]*$','','lineanchors'); + + % Strip out internal HG2 mirror properties + dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*_I:[^\n]*$','','lineanchors'); + dataFieldsStr = regexprep(dataFieldsStr,'\n\n+','\n'); + + % Sort the fieldnames + %fieldNames = fieldnames(dataFields); + try + [a,b,c,d] = regexp(dataFieldsStr,'(\w*): '); + fieldNames = strrep(d,': ',''); + catch + fieldNames = fieldnames(dataFields); + end + try + [fieldNames, sortedIdx] = sort(fieldNames); + s = strsplit(dataFieldsStr, sprintf('\n'))'; + dataFieldsStr = strjoin(s(sortedIdx), sprintf('\n')); + catch + % never mind... - ignore, leave unsorted + end + + % Convert into a Matlab handle() + %nodeHandle = handle(nodeHandle); + try + % ensure this is a Matlab handle, not a java object + nodeHandle = handle(nodeHandle, 'CallbackProperties'); + catch + try + % HG handles don't allow CallbackProperties... + nodeHandle = handle(nodeHandle); + catch + % Some Matlab class objects simply cannot be converted into a handle() + end + end + + % HTMLize tooltip data + % First, set the fields' font based on its read-write status + for fieldIdx = 1 : length(fieldNames) + thisFieldName = fieldNames{fieldIdx}; + %accessFlags = get(findprop(nodeHandle,thisFieldName),'AccessFlags'); + try + hProp = findprop(nodeHandle,thisFieldName); + accessFlags = get(hProp,'AccessFlags'); + visible = get(hProp,'Visible'); + catch + accessFlags = []; + visible = 'on'; + try if hProp.Hidden, visible='off'; end, catch, end + end + %if isfield(accessFlags,'PublicSet') && strcmp(accessFlags.PublicSet,'on') + if (~isempty(hProp) && isprop(hProp,'SetAccess') && isequal(hProp.SetAccess,'public')) || ... % isequal(...'public') and not strcmpi(...) because might be a cell array of classes + (~isempty(accessFlags) && isfield(accessFlags,'PublicSet') && strcmpi(accessFlags.PublicSet,'on')) + % Bolden read/write fields + thisFieldFormat = ['' thisFieldName ':$2']; + %elseif ~isfield(accessFlags,'PublicSet') + elseif (isempty(hProp) || ~isprop(hProp,'SetAccess')) && ... + (isempty(accessFlags) || ~isfield(accessFlags,'PublicSet')) + % Undefined - probably a Matlab-defined field of com.mathworks.hg.peer.FigureFrameProxy... + thisFieldFormat = ['' thisFieldName ':$2']; + undefinedStr = ', undefined'; + else % PublicSet=='off' + % Gray-out & italicize any read-only fields + thisFieldFormat = ['' thisFieldName ':$2']; + end + if strcmpi(visible,'off') + %thisFieldFormat = ['' thisFieldFormat '']; %#ok + thisFieldFormat = regexprep(thisFieldFormat, {'(.*):(.*)','<.?b>'}, {'$1:$2',''}); %'(.*):(.*)', '$1:$2'); + hiddenStr = ', hidden'; + end + dataFieldsStr = regexprep(dataFieldsStr, ['([\s\n])' thisFieldName ':([^\n]*)'], ['$1' thisFieldFormat]); + end + catch + % never mind... - probably an ambiguous property name + %dispError + end + + % Method 1: simple
    list + %dataFieldsStr = strrep(dataFieldsStr,char(10),' 
      '); + + % Method 2: 2-column + dataFieldsStr = regexprep(dataFieldsStr, '^\s*([^:]+:)([^\n]*)\n^\s*([^:]+:)([^\n]*)$', '', 'lineanchors'); + dataFieldsStr = regexprep(dataFieldsStr, '^[^<]\s*([^:]+:)([^\n]*)$', '', 'lineanchors'); + dataFieldsStr = ['(documented' undefinedStr hiddenStr ' & read-only fields)

      

     $1 $2    $3 $4 
     $1 $2  
    ' dataFieldsStr '
    ']; + end + + %% Update tooltip string with a node's data + function updateNodeTooltip(nodeHandle, uiObject) + try + toolTipStr = class(nodeHandle); + dataFieldsStr = ''; + + % Add HG annotation if relevant + if ishghandle(nodeHandle) + hgStr = ' HG Handle'; + else + hgStr = ''; + end + + % Prevent HG-Java warnings + oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty'); + warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty'); + warning('off','MATLAB:hg:Root'); + + % Note: don't bulk-get because (1) not all properties are returned & (2) some properties cause a Java exception + % Note2: the classhandle approach does not enable access to user-defined schema.props + ch = classhandle(handle(nodeHandle)); + dataFields = []; + [sortedNames, sortedIdx] = sort(get(ch.Properties,'Name')); + for idx = 1 : length(sortedIdx) + sp = ch.Properties(sortedIdx(idx)); + % TODO: some fields (see EOL comment below) generate a Java Exception from: com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run + if strcmp(sp.AccessFlags.PublicGet,'on') % && ~any(strcmp(sp.Name,{'FixedColors','ListboxTop','Extent'})) + try + dataFields.(sp.Name) = get(nodeHandle, sp.Name); + catch + dataFields.(sp.Name) = 'Error!'; + end + else + dataFields.(sp.Name) = '(no public getter method)'; + end + end + dataFieldsStr = getPropsHtml(nodeHandle, dataFields); + catch + % Probably a non-HG java object + try + % Note: the bulk-get approach enables access to user-defined schema-props, but not to some original classhandle Properties... + try + oldWarn3 = warning('off','MATLAB:structOnObject'); + dataFields = struct(nodeHandle); + warning(oldWarn3); + catch + dataFields = get(nodeHandle); + end + dataFieldsStr = getPropsHtml(nodeHandle, dataFields); + catch + % Probably a missing property getter implementation + try + % Inform the user - bail out on error + err = lasterror; %#ok + dataFieldsStr = ['

    ' strrep(err.message, char(10), '
    ')]; + catch + % forget it... + end + end + end + + % Restore warnings + try warning(oldWarn); catch, end + + % Set the object tooltip + if ~isempty(dataFieldsStr) + toolTipStr = [' ' char(toolTipStr) '' hgStr ': ' dataFieldsStr '']; + end + uiObject.setToolTipText(toolTipStr); + end + + %% Expand tree node + function nodeExpanded(src, evd, tree) %#ok + % tree = handle(src); + % evdsrc = evd.getSource; + evdnode = evd.getCurrentNode; + + if ~tree.isLoaded(evdnode) + + % Get the list of children TreeNodes + childnodes = getChildrenNodes(tree, evdnode); + + % Add the HG sub-tree (unless already included in the first tree) + childHandle = getappdata(evdnode.handle,'childHandle'); %=evdnode.getUserObject + if evdnode.isRoot && ~isempty(hg_handles) && ~isequal(hg_handles(1).java, childHandle) + childnodes = [childnodes, getChildrenNodes(tree, evdnode, true)]; + end + + % If we have a single child handle, wrap it within a javaArray for tree.add() to "swallow" + if (length(childnodes) == 1) + chnodes = childnodes; + childnodes = javaArray('com.mathworks.hg.peer.UITreeNode', 1); + childnodes(1) = java(chnodes); + end + + % Add child nodes to the current node + tree.add(evdnode, childnodes); + tree.setLoaded(evdnode, true); + end + end + + %% Get an icon image no larger than 16x16 pixels + function iconImage = setIconSize(iconImage) + try + iconWidth = iconImage.getWidth; + iconHeight = iconImage.getHeight; + if iconWidth > 16 + newHeight = fix(iconHeight * 16 / iconWidth); + iconImage = iconImage.getScaledInstance(16,newHeight,iconImage.SCALE_SMOOTH); + elseif iconHeight > 16 + newWidth = fix(iconWidth * 16 / iconHeight); + iconImage = iconImage.getScaledInstance(newWidth,16,iconImage.SCALE_SMOOTH); + end + catch + % never mind... - return original icon + end + end % setIconSize + + %% Get list of children nodes + function nodes = getChildrenNodes(tree, parentNode, isRootHGNode) + try + iconpath = [matlabroot, '/toolbox/matlab/icons/']; + nodes = handle([]); + try + userdata = get(tree,'userdata'); + catch + userdata = getappdata(handle(tree),'userdata'); + end + hdls = userdata.handles; + nodedata = get(parentNode,'userdata'); + if nargin < 3 + %isJavaNode = ~ishghandle(parentNode.getUserObject); + isJavaNode = ~ishghandle(nodedata.obj); + isRootHGNode = false; + else + isJavaNode = ~isRootHGNode; + end + + % Search for this parent node in the list of all nodes + parents = userdata.parents; + nodeIdx = nodedata.idx; + + if isJavaNode && isempty(nodeIdx) % Failback, in case userdata doesn't work for some reason... + for hIdx = 1 : length(hdls) + %if isequal(handle(parentNode.getUserObject), hdls(hIdx)) + if isequal(handle(nodedata.obj), hdls(hIdx)) + nodeIdx = hIdx; + break; + end + end + end + if ~isJavaNode + if isRootHGNode % =root HG node + thisChildHandle = userdata.hg_handles(1); + childName = getNodeName(thisChildHandle); + hasGrandChildren = any(parents==1); + icon = []; + if hasGrandChildren && length(hg_handles)>1 + childName = childName.concat(' - HG root container'); + icon = [iconpath 'figureicon.gif']; + end + try + nodes = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren); + catch % old matlab version don't have the 'v0' option + try + nodes = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren); + catch + % probably an invalid handle - ignore... + end + end + + % Add the handler to the node's internal data + % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes + % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata + %nodes.setUserObject(thisChildHandle); + setappdata(nodes,'childHandle',thisChildHandle); + nodedata.idx = 1; + nodedata.obj = thisChildHandle; + set(nodes,'userdata',nodedata); + return; + else % non-root HG node + parents = userdata.hg_parents; + hdls = userdata.hg_handles; + end % if isRootHGNode + end % if ~isJavaNode + + % If this node was found, get the list of its children + if ~isempty(nodeIdx) + %childIdx = setdiff(find(parents==nodeIdx),nodeIdx); + childIdx = find(parents==nodeIdx); + childIdx(childIdx==nodeIdx) = []; % faster... + numChildren = length(childIdx); + for cIdx = 1 : numChildren + thisChildIdx = childIdx(cIdx); + try thisChildHandle = hdls(thisChildIdx); catch, continue, end + childName = getNodeName(thisChildHandle); + try + visible = thisChildHandle.Visible; + if visible + try visible = thisChildHandle.Width > 0; catch, end %#ok + end + if ~visible + childName = ['' char(childName) '']; %#ok grow + end + catch + % never mind... + end + hasGrandChildren = any(parents==thisChildIdx); + try + isaLabel = isa(thisChildHandle.java,'javax.swing.JLabel'); + catch + isaLabel = 0; + end + if hasGrandChildren && ~any(strcmp(class(thisChildHandle),{'axes'})) + icon = [iconpath 'foldericon.gif']; + elseif isaLabel + icon = [iconpath 'tool_text.gif']; + else + icon = []; + end + try + nodes(cIdx) = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren); + catch % old matlab version don't have the 'v0' option + try + nodes(cIdx) = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren); + catch + % probably an invalid handle - ignore... + end + end + + % Use existing object icon, if available + try + setTreeNodeIcon(nodes(cIdx),thisChildHandle); + catch + % probably an invalid handle - ignore... + end + + % Pre-select the node based upon the user's FINDJOBJ filters + try + if isJavaNode && ~userdata.userSelected && any(userdata.initialIdx == thisChildIdx) + pause(0.0002); % as short as possible... + drawnow; + if isempty(tree.getSelectedNodes) + tree.setSelectedNode(nodes(cIdx)); + else + newSelectedNodes = [tree.getSelectedNodes, nodes(cIdx).java]; + tree.setSelectedNodes(newSelectedNodes); + end + end + catch + % never mind... + end + + % Add the handler to the node's internal data + % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes + % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata + % Note3: the following will error if invalid handle - ignore + try + if isJavaNode + thisChildHandle = thisChildHandle.java; + end + %nodes(cIdx).setUserObject(thisChildHandle); + setappdata(nodes(cIdx),'childHandle',thisChildHandle); + nodedata.idx = thisChildIdx; + nodedata.obj = thisChildHandle; + set(nodes(cIdx),'userdata',nodedata); + catch + % never mind (probably an invalid handle) - leave unchanged (like a leaf) + end + end + end + catch + % Never mind - leave unchanged (like a leaf) + %error('YMA:findjobj:UnknownNodeType', 'Error expanding component tree node'); + dispError + end + end + + %% Get a node's name + function [nodeName, nodeTitle] = getNodeName(hndl,charsLimit) + try + % Initialize (just in case one of the succeding lines croaks) + nodeName = ''; + nodeTitle = ''; + if ~ismethod(hndl,'getClass') + try + nodeName = class(hndl); + catch + nodeName = hndl.type; % last-ditch try... + end + else + nodeName = hndl.getClass.getSimpleName; + end + + % Strip away the package name, leaving only the regular classname + if ~isempty(nodeName) && ischar(nodeName) + nodeName = java.lang.String(nodeName); + nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1); + end + if (nodeName.length == 0) + % fix case of anonymous internal classes, that do not have SimpleNames + try + nodeName = hndl.getClass.getName; + nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1); + catch + % never mind - leave unchanged... + end + end + + % Get any unique identifying string (if available in one of several fields) + labelsToCheck = {'label','title','text','string','displayname','toolTipText','TooltipString','actionCommand','name','Tag','style'}; %,'UIClassID'}; + nodeTitle = ''; + strField = ''; %#ok - used for debugging + while ((~isa(nodeTitle,'java.lang.String') && ~ischar(nodeTitle)) || isempty(nodeTitle)) && ~isempty(labelsToCheck) + try + nodeTitle = get(hndl,labelsToCheck{1}); + strField = labelsToCheck{1}; %#ok - used for debugging + catch + % never mind - probably missing prop, so skip to next one + end + labelsToCheck(1) = []; + end + if length(nodeTitle) ~= numel(nodeTitle) + % Multi-line - convert to a long single line + nodeTitle = nodeTitle'; + nodeTitle = nodeTitle(:)'; + end + if isempty(char(nodeTitle)) + % No title - check whether this is an HG label whose text is gettable + try + location = hndl.getLocationOnScreen; + pos = [location.getX, location.getY, hndl.getWidth, hndl.getHeight]; + %dist = sum((labelPositions-repmat(pos,size(labelPositions,1),[1,1,1,1])).^2, 2); + dist = sum((labelPositions-repmat(pos,[size(labelPositions,1),1])).^2, 2); + [minVal,minIdx] = min(dist); + % Allow max distance of 8 = 2^2+2^2 (i.e. X&Y off by up to 2 pixels, W&H exact) + if minVal <= 8 % 8=2^2+2^2 + nodeTitle = get(hg_labels(minIdx),'string'); + % Preserve the label handles & position for the tooltip & context-menu + %hg_labels(minIdx) = []; + %labelPositions(minIdx,:) = []; + end + catch + % never mind... + end + end + if nargin<2, charsLimit = 25; end + extraStr = regexprep(nodeTitle,{sprintf('(.{%d,%d}).*',charsLimit,min(charsLimit,length(nodeTitle)-1)),' +'},{'$1...',' '},'once'); + if ~isempty(extraStr) + if ischar(extraStr) + nodeName = nodeName.concat(' (''').concat(extraStr).concat(''')'); + else + nodeName = nodeName.concat(' (').concat(num2str(extraStr)).concat(')'); + end + %nodeName = nodeName.concat(strField); + end + catch + % Never mind - use whatever we have so far + %dispError + end + end + + %% Strip standard Swing callbacks from a list of events + function evNames = stripStdCbs(evNames) + try + stdEvents = {'AncestorAdded', 'AncestorMoved', 'AncestorRemoved', 'AncestorResized', ... + 'ComponentAdded', 'ComponentRemoved', 'ComponentHidden', ... + 'ComponentMoved', 'ComponentResized', 'ComponentShown', ... + 'FocusGained', 'FocusLost', 'HierarchyChanged', ... + 'KeyPressed', 'KeyReleased', 'KeyTyped', ... + 'MouseClicked', 'MouseDragged', 'MouseEntered', 'MouseExited', ... + 'MouseMoved', 'MousePressed', 'MouseReleased', 'MouseWheelMoved', ... + 'PropertyChange', 'VetoableChange', ... + 'CaretPositionChanged', 'InputMethodTextChanged', ... + 'ButtonDown', 'Create', 'Delete'}; + stdEvents = [stdEvents, strcat(stdEvents,'Callback'), strcat(stdEvents,'Fcn')]; + evNames = setdiff(evNames,stdEvents)'; + catch + % Never mind... + dispError + end + end + + %% Callback function for checkbox + function cbHideStdCbs_Callback(src, evd, callbacksTable, varargin) %#ok + try + % Store the current checkbox value for later use + if nargin < 3 + try + callbacksTable = get(src,'userdata'); + catch + callbacksTable = getappdata(src,'userdata'); + end + end + if evd.getSource.isSelected + setappdata(callbacksTable,'hideStdCbs',1); + else + setappdata(callbacksTable,'hideStdCbs',[]); + end + + % Rescan the current node + try + userdata = get(callbacksTable,'userdata'); + catch + userdata = getappdata(callbacksTable,'userdata'); + end + nodepath = userdata.jTree.getSelectionModel.getSelectionPath; + try + ed.getCurrentNode = nodepath.getLastPathComponent; + nodeSelected(handle(userdata.jTreePeer),ed,[]); + catch + % ignore - probably no node selected + end + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btWebsite_Callback(src, evd, varargin) %#ok + try + web('http://UndocumentedMatlab.com','-browser'); + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btRefresh_Callback(src, evd, varargin) %#ok + try + % Set cursor shape to hourglass until we're done + hTreeFig = varargin{2}; + set(hTreeFig,'Pointer','watch'); + drawnow; + object = varargin{1}; + + % Re-invoke this utility to re-scan the container for all children + findjobj(object); + catch + % Never mind... + end + + % Restore default cursor shape + set(hTreeFig,'Pointer','arrow'); + end + + %% Callback function for button + function btExport_Callback(src, evd, varargin) %#ok + try + % Get the list of all selected nodes + if length(varargin) > 1 + jTree = varargin{1}; + numSelections = jTree.getSelectionCount; + selectionPaths = jTree.getSelectionPaths; + hdls = handle([]); + for idx = 1 : numSelections + %hdls(idx) = handle(selectionPaths(idx).getLastPathComponent.getUserObject); + nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata'); + try + hdls(idx) = handle(nodedata.obj,'CallbackProperties'); + catch + if idx==1 % probably due to HG2: can't convert object to handle([]) + hdls = nodedata.obj; + else + hdls(idx) = nodedata.obj; + end + end + end + + % Assign the handles in the base workspace & inform user + assignin('base','findjobj_hdls',hdls); + classNameLabel = varargin{2}; + msg = ['Exported ' char(classNameLabel.getText.trim) ' to base workspace variable findjobj_hdls']; + else + % Right-click (context-menu) callback + data = varargin{1}; + obj = data{1}; + varName = data{2}; + if isempty(varName) + varName = inputdlg('Enter workspace variable name','FindJObj'); + if isempty(varName), return; end % bail out on + varName = varName{1}; + if isempty(varName) || ~ischar(varName), return; end % bail out on empty/null + varName = genvarname(varName); + end + assignin('base',varName,handle(obj,'CallbackProperties')); + msg = ['Exported object to base workspace variable ' varName]; + end + msgbox(msg,'FindJObj','help'); + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btFocus_Callback(src, evd, varargin) %#ok + try + % Request focus for the specified object + object = getTopSelectedObject(varargin{:}); + object.requestFocus; + catch + try + object = object.java.getPeer.requestFocus; + object.requestFocus; + catch + % Never mind... + %dispError + end + end + end + + %% Callback function for button + function btInspect_Callback(src, evd, varargin) %#ok + try + % Inspect the specified object + if length(varargin) == 1 + object = varargin{1}; + else + object = getTopSelectedObject(varargin{:}); + end + if isempty(which('uiinspect')) + + % If the user has not indicated NOT to be informed about UIInspect + if ~ispref('FindJObj','dontCheckUIInspect') + + % Ask the user whether to download UIINSPECT (YES, no, no & don't ask again) + answer = questdlg({'The object inspector requires UIINSPECT from the MathWorks File Exchange. UIINSPECT was created by Yair Altman, like this FindJObj utility.','','Download & install UIINSPECT?'},'UIInspect','Yes','No','No & never ask again','Yes'); + switch answer + case 'Yes' % => Yes: download & install + try + % Download UIINSPECT + baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/17935'; + fileUrl = [baseUrl '?controller=file_infos&download=true']; + %file = urlread(fileUrl); + %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL + + % Install... + %newPath = fullfile(fileparts(which(mfilename)),'uiinspect.m'); + %fid = fopen(newPath,'wt'); + %fprintf(fid,'%s',file); + %fclose(fid); + [fpath,fname,fext] = fileparts(which(mfilename)); + zipFileName = fullfile(fpath,'uiinspect.zip'); + urlwrite(fileUrl,zipFileName); + unzip(zipFileName,fpath); + rehash; + catch + % Error downloading: inform the user + msgbox(['Error in downloading: ' lasterr], 'UIInspect', 'warn'); %#ok + web(baseUrl); + end + + % ...and now run it... + %pause(0.1); + drawnow; + dummy = which('uiinspect'); %#ok used only to load into memory + uiinspect(object); + return; + + case 'No & never ask again' % => No & don't ask again + setpref('FindJObj','dontCheckUIInspect',1); + + otherwise + % forget it... + end + end + drawnow; + + % No UIINSPECT available - run the good-ol' METHODSVIEW()... + methodsview(object); + else + uiinspect(object); + end + catch + try + if isjava(object) + methodsview(object) + else + methodsview(object.java); + end + catch + % Never mind... + dispError + end + end + end + + %% Callback function for button + function btCheckFex_Callback(src, evd, varargin) %#ok + try + % Check the FileExchange for the latest version + web('http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317'); + catch + % Never mind... + dispError + end + end + + %% Check for existence of a newer version + function checkVersion() + try + % If the user has not indicated NOT to be informed + if ~ispref('FindJObj','dontCheckNewerVersion') + + % Get the latest version date from the File Exchange webpage + baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/'; + webUrl = [baseUrl '14317']; % 'loadFile.do?objectId=14317']; + webPage = urlread(webUrl); + modIdx = strfind(webPage,'>Updates<'); + if ~isempty(modIdx) + webPage = webPage(modIdx:end); + % Note: regexp hangs if substr not found, so use strfind instead... + %latestWebVersion = regexprep(webPage,'.*?>(20[\d-]+).*','$1'); + dateIdx = strfind(webPage,'class="date">'); + if ~isempty(dateIdx) + latestDate = webPage(dateIdx(end)+13 : dateIdx(end)+23); + try + startIdx = dateIdx(end)+27; + descStartIdx = startIdx + strfind(webPage(startIdx:startIdx+999),''); + descEndIdx = startIdx + strfind(webPage(startIdx:startIdx+999),''); + descStr = webPage(descStartIdx(1)+3 : descEndIdx(1)-2); + descStr = regexprep(descStr,'',''); + catch + descStr = ''; + end + + % Get this file's latest date + thisFileName = which(mfilename); %#ok + try + thisFileData = dir(thisFileName); + try + thisFileDatenum = thisFileData.datenum; + catch % old ML versions... + thisFileDatenum = datenum(thisFileData.date); + end + catch + thisFileText = evalc('type(thisFileName)'); + thisFileLatestDate = regexprep(thisFileText,'.*Change log:[\s%]+([\d-]+).*','$1'); + thisFileDatenum = datenum(thisFileLatestDate,'yyyy-mm-dd'); + end + + % If there's a newer version on the File Exchange webpage (allow 2 days grace period) + if (thisFileDatenum < datenum(latestDate,'dd mmm yyyy')-2) + + % Ask the user whether to download the newer version (YES, no, no & don't ask again) + msg = {['A newer version (' latestDate ') of FindJObj is available on the MathWorks File Exchange:'], '', ... + ['\color{blue}' descStr '\color{black}'], '', ... + 'Download & install the new version?'}; + createStruct.Interpreter = 'tex'; + createStruct.Default = 'Yes'; + answer = questdlg(msg,'FindJObj','Yes','No','No & never ask again',createStruct); + switch answer + case 'Yes' % => Yes: download & install newer file + try + %fileUrl = [baseUrl '/download.do?objectId=14317&fn=findjobj&fe=.m']; + fileUrl = [baseUrl '/14317?controller=file_infos&download=true']; + %file = urlread(fileUrl); + %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL + %fid = fopen(thisFileName,'wt'); + %fprintf(fid,'%s',file); + %fclose(fid); + [fpath,fname,fext] = fileparts(thisFileName); + zipFileName = fullfile(fpath,[fname '.zip']); + urlwrite(fileUrl,zipFileName); + unzip(zipFileName,fpath); + rehash; + catch + % Error downloading: inform the user + msgbox(['Error in downloading: ' lasterr], 'FindJObj', 'warn'); %#ok + web(webUrl); + end + case 'No & never ask again' % => No & don't ask again + setpref('FindJObj','dontCheckNewerVersion',1); + otherwise + % forget it... + end + end + end + else + % Maybe webpage not fully loaded or changed format - bail out... + end + end + catch + % Never mind... + end + end + + %% Get the first selected object (might not be the top one - depends on selection order) + function object = getTopSelectedObject(jTree, root) + try + object = []; + numSelections = jTree.getSelectionCount; + if numSelections > 0 + % Get the first object specified + %object = jTree.getSelectionPath.getLastPathComponent.getUserObject; + nodedata = get(jTree.getSelectionPath.getLastPathComponent,'userdata'); + else + % Get the root object (container) + %object = root.getUserObject; + nodedata = get(root,'userdata'); + end + object = nodedata.obj; + catch + % Never mind... + dispError + end + end + + %% Update component callback upon callbacksTable data change + function tbCallbacksChanged(src, evd, object, table) + persistent hash + try + % exit if invalid handle or already in Callback + %if ~ishandle(src) || ~isempty(getappdata(src,'inCallback')) % || length(dbstack)>1 %exit also if not called from user action + if isempty(hash), hash = java.util.Hashtable; end + if ~ishandle(src) || ~isempty(hash.get(src)) % || length(dbstack)>1 %exit also if not called from user action + return; + end + %setappdata(src,'inCallback',1); % used to prevent endless recursion % can't use getappdata(src,...) because it fails on R2010b!!! + hash.put(src,1); + + % Update the object's callback with the modified value + modifiedColIdx = evd.getColumn; + modifiedRowIdx = evd.getFirstRow; + if modifiedRowIdx>=0 %&& modifiedColIdx==1 %sanity check - should always be true + %table = evd.getSource; + %object = get(src,'userdata'); + modifiedRowIdx = table.getSelectedRow; % overcome issues with hierarchical table + cbName = strtrim(table.getValueAt(modifiedRowIdx,0)); + try + cbValue = strtrim(char(table.getValueAt(modifiedRowIdx,1))); + if ~isempty(cbValue) && ismember(cbValue(1),'{[@''') + cbValue = eval(cbValue); + end + if (~ischar(cbValue) && ~isa(cbValue, 'function_handle') && (~iscell(cbValue) || iscom(object(1)))) + revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, ''); + else + for objIdx = 1 : length(object) + obj = object(objIdx); + if ~iscom(obj) + try + try + if isjava(obj) + obj = handle(obj,'CallbackProperties'); + end + catch + % never mind... + end + set(obj, cbName, cbValue); + catch + try + set(handle(obj,'CallbackProperties'), cbName, cbValue); + catch + % never mind - probably a callback-group header + end + end + else + cbs = obj.eventlisteners; + if ~isempty(cbs) + cbs = cbs(strcmpi(cbs(:,1),cbName),:); + obj.unregisterevent(cbs); + end + if ~isempty(cbValue) && ~strcmp(cbName,'-') + obj.registerevent({cbName, cbValue}); + end + end + end + end + catch + revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, lasterr) %#ok + end + end + catch + % never mind... + end + %setappdata(src,'inCallback',[]); % used to prevent endless recursion % can't use setappdata(src,...) because it fails on R2010b!!! + hash.remove(src); + end + + %% Revert Callback table modification + function revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, errMsg) %#ok + try + % Display a notification MsgBox + msg = 'Callbacks must be a ''string'', or a @function handle'; + if ~iscom(object(1)), msg = [msg ' or a {@func,args...} construct']; end + if ~isempty(errMsg), msg = {errMsg, '', msg}; end + msgbox(msg, ['Error setting ' cbName ' value'], 'warn'); + + % Revert to the current value + curValue = ''; + try + if ~iscom(object(1)) + curValue = charizeData(get(object(1),cbName)); + else + cbs = object(1).eventlisteners; + if ~isempty(cbs) + cbs = cbs(strcmpi(cbs(:,1),cbName),:); + curValue = charizeData(cbs(1,2)); + end + end + catch + % never mind... - clear the current value + end + table.setValueAt(curValue, modifiedRowIdx, modifiedColIdx); + catch + % never mind... + end + end % revertCbTableModification + + %% Get the Java positions of all HG text labels + function labelPositions = getLabelsJavaPos(container) + try + labelPositions = []; + + % Ensure we have a figure handle + try + h = hFig; %#ok unused + catch + hFig = getCurrentFigure; + end + + % Get the figure's margins from the Matlab properties + hg_labels = findall(hFig, 'Style','text'); + units = get(hFig,'units'); + set(hFig,'units','pixels'); + outerPos = get(hFig,'OuterPosition'); + innerPos = get(hFig,'Position'); + set(hFig,'units',units); + margins = abs(innerPos-outerPos); + + figX = container.getX; % =outerPos(1) + figY = container.getY; % =outerPos(2) + %figW = container.getWidth; % =outerPos(3) + figH = container.getHeight; % =outerPos(4) + + % Get the relevant screen pixel size + %monitorPositions = get(0,'MonitorPositions'); + %for monitorIdx = size(monitorPositions,1) : -1 : 1 + % screenSize = monitorPositions(monitorIdx,:); + % if (outerPos(1) >= screenSize(1)) % && (outerPos(1)+outerPos(3) <= screenSize(3)) + % break; + % end + %end + %monitorBaseY = screenSize(4) - monitorPositions(1,4); + + % Compute the labels' screen pixel position in Java units ([0,0] = top left) + for idx = 1 : length(hg_labels) + matlabPos = getpixelposition(hg_labels(idx),1); + javaX = figX + matlabPos(1) + margins(1); + javaY = figY + figH - matlabPos(2) - matlabPos(4) - margins(2); + labelPositions(idx,:) = [javaX, javaY, matlabPos(3:4)]; %#ok grow + end + catch + % never mind... + err = lasterror; %#ok debug point + end + end + + %% Traverse an HG container hierarchy and extract the HG elements within + function traverseHGContainer(hcontainer,level,parent) + try + % Record the data for this node + thisIdx = length(hg_levels) + 1; + hg_levels(thisIdx) = level; + hg_parentIdx(thisIdx) = parent; + try + hg_handles(thisIdx) = handle(hcontainer); + catch + hg_handles = handle(hcontainer); + end + parentId = length(hg_parentIdx); + + % Now recursively process all this node's children (if any) + %if ishghandle(hcontainer) + try % try-catch is faster than checking ishghandle(hcontainer)... + allChildren = allchild(handle(hcontainer)); + for childIdx = 1 : length(allChildren) + traverseHGContainer(allChildren(childIdx),level+1,parentId); + end + catch + % do nothing - probably not a container + %dispError + end + + % TODO: Add axis (plot) component handles + catch + % forget it... + end + end + + %% Debuggable "quiet" error-handling + function dispError + err = lasterror; %#ok + msg = err.message; + for idx = 1 : length(err.stack) + filename = err.stack(idx).file; + if ~isempty(regexpi(filename,mfilename)) + funcname = err.stack(idx).name; + line = num2str(err.stack(idx).line); + msg = [msg ' at ' funcname ' line #' line '']; %#ok grow + break; + end + end + disp(msg); + return; % debug point + end + + %% ML 7.0 - compatible ischar() function + function flag = ischar(data) + try + flag = builtin('ischar',data); + catch + flag = isa(data,'char'); + end + end + + %% Set up the uitree context (right-click) menu + function jmenu = setTreeContextMenu(obj,node,tree_h) + % Prepare the context menu (note the use of HTML labels) + import javax.swing.* + titleStr = getNodeTitleStr(obj,node); + titleStr = regexprep(titleStr,'


    .*',''); + menuItem0 = JMenuItem(titleStr); + menuItem0.setEnabled(false); + menuItem0.setArmed(false); + %menuItem1 = JMenuItem('Export handle to findjobj_hdls'); + if isjava(obj), prefix = 'j'; else, prefix = 'h'; end %#ok + varname = strrep([prefix strtok(char(node.getName))], '$','_'); + varname = genvarname(varname); + varname(2) = upper(varname(2)); % ensure lowerCamelCase + menuItem1 = JMenuItem(['Export handle to ' varname]); + menuItem2 = JMenuItem('Export handle to...'); + menuItem3 = JMenuItem('Request focus (bring to front)'); + menuItem4 = JMenuItem('Flash component borders'); + menuItem5 = JMenuItem('Display properties & callbacks'); + menuItem6 = JMenuItem('Inspect object'); + + % Set the menu items' callbacks + set(handle(menuItem1,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,varname}}); + set(handle(menuItem2,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,[]}}); + set(handle(menuItem3,'CallbackProperties'), 'ActionPerformedCallback', {@requestFocus,obj}); + set(handle(menuItem4,'CallbackProperties'), 'ActionPerformedCallback', {@flashComponent,{obj,0.2,3}}); + set(handle(menuItem5,'CallbackProperties'), 'ActionPerformedCallback', {@nodeSelected,{tree_h,node}}); + set(handle(menuItem6,'CallbackProperties'), 'ActionPerformedCallback', {@btInspect_Callback,obj}); + + % Add all menu items to the context menu (with internal separator) + jmenu = JPopupMenu; + jmenu.add(menuItem0); + jmenu.addSeparator; + handleValue=[]; try handleValue = double(obj); catch, end; %#ok + if ~isempty(handleValue) + % For valid HG handles only + menuItem0a = JMenuItem('Copy handle value to clipboard'); + set(handle(menuItem0a,'CallbackProperties'), 'ActionPerformedCallback', sprintf('clipboard(''copy'',%.99g)',handleValue)); + jmenu.add(menuItem0a); + end + jmenu.add(menuItem1); + jmenu.add(menuItem2); + jmenu.addSeparator; + jmenu.add(menuItem3); + jmenu.add(menuItem4); + jmenu.add(menuItem5); + jmenu.add(menuItem6); + end % setTreeContextMenu + + %% Set the mouse-press callback + function treeMousePressedCallback(hTree, eventData, tree_h) %#ok hTree is unused + if eventData.isMetaDown % right-click is like a Meta-button + % Get the clicked node + clickX = eventData.getX; + clickY = eventData.getY; + jtree = eventData.getSource; + treePath = jtree.getPathForLocation(clickX, clickY); + try + % Modify the context menu based on the clicked node + node = treePath.getLastPathComponent; + userdata = get(node,'userdata'); + obj = userdata.obj; + jmenu = setTreeContextMenu(obj,node,tree_h); + + % TODO: remember to call jmenu.remove(item) in item callback + % or use the timer hack shown here to remove the item: + % timerFcn = {@menuRemoveItem,jmenu,item}; + % start(timer('TimerFcn',timerFcn,'StartDelay',0.2)); + + % Display the (possibly-modified) context menu + jmenu.show(jtree, clickX, clickY); + jmenu.repaint; + + % This is for debugging: + userdata.tree = jtree; + setappdata(gcf,'findjobj_hgtree',userdata) + catch + % clicked location is NOT on top of any node + % Note: can also be tested by isempty(treePath) + end + end + end % treeMousePressedCallback + + %% Remove the extra context menu item after display + function menuRemoveItem(hObj,eventData,jmenu,item) %#ok unused + jmenu.remove(item); + end % menuRemoveItem + + %% Get the title for the tooltip and context (right-click) menu + function nodeTitleStr = getNodeTitleStr(obj,node) + try + % Display the full classname and object name in the tooltip + %nodeName = char(node.getName); + %nodeName = strrep(nodeName, '',''); + %nodeName = strrep(nodeName, '',''); + nodeName = char(getNodeName(obj,99)); + [objClass,objName] = strtok(nodeName); + objName = objName(3:end-1); % strip leading ( and trailing ) + if isempty(objName), objName = '(none found)'; end + nodeName = char(node.getName); + objClass = char(obj.getClass.getName); + nodeTitleStr = sprintf('Class name: %s
    Text/title: %s',objClass,objName); + + % If the component is invisible, state this in the tooltip + if ~isempty(strfind(nodeName,'color="gray"')) + nodeTitleStr = [nodeTitleStr '
    *** Invisible ***']; + end + nodeTitleStr = [nodeTitleStr '
    Right-click for context-menu']; + catch + % Possible not a Java object - try treating as an HG handle + try + handleValueStr = sprintf('#: %.99g',double(obj)); + try + type = ''; + type = get(obj,'type'); + type(1) = upper(type(1)); + catch + if ~ishandle(obj) + type = ['Invalid ' char(node.getName) '']; + handleValueStr = '!!!
    Perhaps this handle was deleted after this UIInspect tree was
    already drawn. Try to refresh by selecting any valid node handle'; + end + end + nodeTitleStr = sprintf('%s handle %s',type,handleValueStr); + try + % If the component is invisible, state this in the tooltip + if strcmp(get(obj,'Visible'),'off') + nodeTitleStr = [nodeTitleStr '
    Invisible']; + end + catch + % never mind... + end + catch + % never mind... - ignore + end + end + end % getNodeTitleStr + + %% Handle tree mouse movement callback - used to set the tooltip & context-menu + function treeMouseMovedCallback(hTree, eventData) + try + x = eventData.getX; + y = eventData.getY; + jtree = eventData.getSource; + treePath = jtree.getPathForLocation(x, y); + try + % Set the tooltip string based on the hovered node + node = treePath.getLastPathComponent; + userdata = get(node,'userdata'); + obj = userdata.obj; + tooltipStr = getNodeTitleStr(obj,node); + set(hTree,'ToolTipText',tooltipStr) + catch + % clicked location is NOT on top of any node + % Note: can also be tested by isempty(treePath) + end + catch + dispError; + end + return; % denug breakpoint + end % treeMouseMovedCallback + + %% Request focus for a specific object handle + function requestFocus(hTree, eventData, obj) %#ok hTree & eventData are unused + % Ensure the object handle is valid + if isjava(obj) + obj.requestFocus; + return; + elseif ~ishandle(obj) + msgbox('The selected object does not appear to be a valid handle as defined by the ishandle() function. Perhaps this object was deleted after this hierarchy tree was already drawn. Refresh this tree by selecting a valid node handle and then retry.','FindJObj','warn'); + beep; + return; + end + + try + foundFlag = 0; + while ~foundFlag + if isempty(obj), return; end % sanity check + type = get(obj,'type'); + obj = double(obj); + foundFlag = any(strcmp(type,{'figure','axes','uicontrol'})); + if ~foundFlag + obj = get(obj,'Parent'); + end + end + feval(type,obj); + catch + % never mind... + dispError; + end + end % requestFocus + +end % FINDJOBJ + +% Fast implementation +function jControl = findjobj_fast(hControl, jContainer) + try jControl = hControl.getTable; return, catch, end % fast bail-out for old uitables + try jControl = hControl.JavaFrame.getGUIDEView; return, catch, end % bail-out for HG2 matlab.ui.container.Panel + oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); + if nargin < 2 || isempty(jContainer) + % Use a HG2 matlab.ui.container.Panel jContainer if the control's parent is a uipanel + try + hParent = get(hControl,'Parent'); + catch + % Probably indicates an invalid/deleted/empty handle + jControl = []; + return + end + try jContainer = hParent.JavaFrame.getGUIDEView; catch, jContainer = []; end + end + if isempty(jContainer) + hFig = ancestor(hControl,'figure'); + jf = get(hFig, 'JavaFrame'); + jContainer = jf.getFigurePanelContainer.getComponent(0); + end + warning(oldWarn); + jControl = []; + counter = 20; % 2018-09-21 speedup (100 x 0.001 => 20 x 0.005) - Martin Lehmann suggestion on FEX 2016-06-07 + specialTooltipStr = '!@#$%^&*'; + try % Fix for R2018b suggested by Eddie (FEX comment 2018-09-19) + tooltipPropName = 'TooltipString'; + oldTooltip = get(hControl,tooltipPropName); + set(hControl,tooltipPropName,specialTooltipStr); + catch + tooltipPropName = 'Tooltip'; + oldTooltip = get(hControl,tooltipPropName); + set(hControl,tooltipPropName,specialTooltipStr); + end + while isempty(jControl) && counter>0 + counter = counter - 1; + pause(0.005); + jControl = findTooltipIn(jContainer, specialTooltipStr); + end + set(hControl,tooltipPropName,oldTooltip); + try jControl.setToolTipText(oldTooltip); catch, end + try jControl = jControl.getParent.getView.getParent.getParent; catch, end % return JScrollPane if exists +end +function jControl = findTooltipIn(jContainer, specialTooltipStr) + try + jControl = []; % Fix suggested by H. Koch 11/4/2017 + tooltipStr = jContainer.getToolTipText; + %if strcmp(char(tooltipStr),specialTooltipStr) + if ~isempty(tooltipStr) && tooltipStr.startsWith(specialTooltipStr) % a bit faster + jControl = jContainer; + else + for idx = 1 : jContainer.getComponentCount + jControl = findTooltipIn(jContainer.getComponent(idx-1), specialTooltipStr); + if ~isempty(jControl), return; end + end + end + catch + % ignore + end +end + +%% TODO TODO TODO +%{ +- Enh: Improve interactive-GUI performance - esp. expandNode() +- Enh: Add property listeners - same problem in MathWork's inspect.m +- Enh: Display additional properties - same problem in MathWork's inspect.m +- Enh: Add axis (plot, Graphics) component handles +- Enh: Add figure thumbnail image below the java tree (& indicate corresponding jObject when selected) +- Enh: scroll initially-selected node into view (problem because treenode has no pixel location) +- Fix: java exceptions when getting some fields (com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run) +- Fix: use EDT if available (especially in flashComponent) +%} + + diff --git a/@GUI/textbox_callback.m b/@GUI/textbox_callback.m index f0829ae..ef2cb29 100644 --- a/@GUI/textbox_callback.m +++ b/@GUI/textbox_callback.m @@ -39,6 +39,24 @@ if(~isempty(unicode2native(event.Character))) % hack because api does not update the string field of % textbox until after it loses focus. temporarily focus on % label, read string, refocus on textbox. + + % When we temporarily lose focus, we would want to save the cursor + % position so we can return to the cursor position were we left of. + + % The cursor position is a uicontrol property that is not exposed by + % Matlab. Since all Matlab uicontrols are based on underlying Java + % Swing controls, accessing these features is possible via their + % Java control peers. + + % the findobj function finds java objects contained within a specified + % Matlab GUI handle + + class(src) + %{ + java_obj = findjobj(src); + java_obj = java_obj.getComponent(0).getComponent(0); + Cursor_Pos = java_obj.getCaretPosition(); + %} uicontrol(object.name_label); undo_data.action = 1; @@ -50,6 +68,7 @@ if(~isempty(unicode2native(event.Character))) object.undo_man.new_state(undo_data); uicontrol(src); + %java_obj.setCaretPosition(Cursor_Pos); figure(object.fig); object.update_undoredo; diff --git a/@RGrid/delete_g1s.asv b/@RGrid/delete_g1s.asv deleted file mode 100644 index 5855a4c..0000000 --- a/@RGrid/delete_g1s.asv +++ /dev/null @@ -1,50 +0,0 @@ -%% delete_g1s -% Same as delete_g2s but we are now deleting RCell with a -% reference to the inputed cell in their Cell1 -% inputs: -% object:RGrid - reference to current RGrid -% cell:Cell - reference to cell being deleted -% outputs; -% none -% Author: Colin Eles elesc@mcmaster.ca -% Organization: McMaster Centre for Software Certification -function [] = delete_g1s(object,cell) -deleted = []; -for i=1:size(object.Cells,2) - if (object.Cells(i).Cell1 == cell) - %[deleted i] %Check this one first - deleted = [deleted i]; - %deleted - end -end -if(~isempty(deleted)) - - %sprintf("Res: %s\n", object.Cells(deleted).result_text) - %object.Cells(deleted).result - %{ - for i=1:size(object.Cells,2) - if(object.Cells(i)) - delete(object.Cells(i).result) - end - end - %} - class(object) - class(object.Cells(deleted)) - object.Cells() - object.Cells(deleted) - %Extract field names - fn = fieldnames(object.Cells(deleted)) - for i=1: - %{ - for i=1:size(object.Cells(deleted).result) - ishandle(object.Cells(deleted).result(i)); - end - %} - isjava(object.Cells(deleted).result) - isa(object.Cells(deleted).result,'UIControl') - class(object.Cells(deleted).result) - delete(object.Cells(deleted).result); - object.Cells(deleted) = []; -end -end - diff --git a/@RGrid/delete_g1s.m b/@RGrid/delete_g1s.m index 680e542..8f34911 100644 --- a/@RGrid/delete_g1s.m +++ b/@RGrid/delete_g1s.m @@ -34,6 +34,8 @@ if(~isempty(deleted)) object.Cells(deleted) %Extract field names fn = fieldnames(object.Cells(deleted)) + class(deleted) + %{ for i=1:numel(fn) object.Cells(deleted).(fn{i}) if (isobject(object.Cells(deleted).(fn{i}))) @@ -41,15 +43,16 @@ if(~isempty(deleted)) object.Cells(deleted).fn{i} = []; end end + %} %{ for i=1:size(object.Cells(deleted).result) ishandle(object.Cells(deleted).result(i)); end %} - isjava(object.Cells(deleted).result) - isa(object.Cells(deleted).result,'UIControl') - class(object.Cells(deleted).result) - delete(object.Cells(deleted).result); + isjava([object.Cells(deleted).result]) + isa([object.Cells(deleted).result],'matlab.ui.control.UIControl') + class([object.Cells(deleted).result]) + delete([object.Cells(deleted).result]); object.Cells(deleted) = []; end end diff --git a/@RGrid/delete_g2s.m b/@RGrid/delete_g2s.m index cf356c5..4e7c527 100644 --- a/@RGrid/delete_g2s.m +++ b/@RGrid/delete_g2s.m @@ -20,7 +20,7 @@ for i=1:size(object.Cells,2) end end if(~isempty(deleted)) - delete(object.Cells(deleted).result); + delete([object.Cells(deleted).result]); object.Cells(deleted) = []; end end diff --git a/FindJavaObjects/findjobj.asv b/FindJavaObjects/findjobj.asv new file mode 100644 index 0000000..09f556c --- /dev/null +++ b/FindJavaObjects/findjobj.asv @@ -0,0 +1,3459 @@ +function [handles,levels,parentIdx,listing] = findjobj(container),varargin) +%#ok<*CTCH,*ASGLU,*MSNU,*NASGU> +%findjobj Find java objects contained within a specified java container or Matlab GUI handle +% +% Syntax: +% [handles, levels, parentIds, listing] = findjobj(container, 'PropName',PropValue(s), ...) +% +% Input parameters: +% container - optional handle to java container uipanel or figure. If unsupplied then current figure will be used +% 'PropName',PropValue - optional list of property pairs (case insensitive). PropName may also be named -PropName +% 'position' - filter results based on those elements that contain the specified X,Y position or a java element +% Note: specify a Matlab position (X,Y = pixels from bottom left corner), not a java one +% 'size' - filter results based on those elements that have the specified W,H (in pixels) +% 'class' - filter results based on those elements that contain the substring (or java class) PropValue +% Note1: filtering is case insensitive and relies on regexp, so you can pass wildcards etc. +% Note2: '-class' is an undocumented findobj PropName, but only works on Matlab (not java) classes +% 'property' - filter results based on those elements that possess the specified case-insensitive property string +% Note1: passing a property value is possible if the argument following 'property' is a cell in the +% format of {'propName','propValue'}. Example: FINDJOBJ(...,'property',{'Text','click me'}) +% Note2: partial property names (e.g. 'Tex') are accepted, as long as they're not ambiguous +% 'depth' - filter results based on specified depth. 0=top-level, Inf=all levels (default=Inf) +% 'flat' - same as specifying: 'depth',0 +% 'not' - negates the following filter: 'not','class','c' returns all elements EXCEPT those with class 'c' +% 'persist' - persist figure components information, allowing much faster results for subsequent invocations +% 'nomenu' - skip menu processing, for "lean" list of handles & much faster processing; +% This option is the default for HG containers but not for figure, Java or no container +% 'print' - display all java elements in a hierarchical list, indented appropriately +% Note1: optional PropValue of element index or handle to java container +% Note2: normally this option would be placed last, after all filtering is complete. Placing this +% option before some filters enables debug print-outs of interim filtering results. +% Note3: output is to the Matlab command window unless the 'listing' (4th) output arg is requested +% 'list' - same as 'print' +% 'debug' - list found component positions in the Command Window +% +% Output parameters: +% handles - list of handles to java elements +% levels - list of corresponding hierarchy level of the java elements (top=0) +% parentIds - list of indexes (in unfiltered handles) of the parent container of the corresponding java element +% listing - results of 'print'/'list' options (empty if these options were not specified) +% +% Note: If no output parameter is specified, then an interactive window will be displayed with a +% ^^^^ tree view of all container components, their properties and callbacks. +% +% Examples: +% findjobj; % display list of all javaelements of currrent figure in an interactive GUI +% handles = findjobj; % get list of all java elements of current figure (inc. menus, toolbars etc.) +% findjobj('print'); % list all java elements in current figure +% findjobj('print',6); % list all java elements in current figure, contained within its 6th element +% handles = findjobj(hButton); % hButton is a matlab button +% handles = findjobj(gcf,'position',getpixelposition(hButton,1)); % same as above but also return hButton's panel +% handles = findjobj(hButton,'persist'); % same as above, persist info for future reuse +% handles = findjobj('class','pushbutton'); % get all pushbuttons in current figure +% handles = findjobj('class','pushbutton','position',123,456); % get all pushbuttons at the specified position +% handles = findjobj(gcf,'class','pushbutton','size',23,15); % get all pushbuttons with the specified size +% handles = findjobj('property','Text','not','class','button'); % get all non-button elements with 'text' property +% handles = findjobj('-property',{'Text','click me'}); % get all elements with 'text' property = 'click me' +% +% Sample usage: +% hButton = uicontrol('string','click me'); +% jButton = findjobj(hButton,'nomenu'); +% % or: jButton = findjobj('property',{'Text','click me'}); +% jButton.setFlyOverAppearance(1); +% jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); +% set(jButton,'FocusGainedCallback',@myMatlabFunction); % some 30 callback points available... +% jButton.get; % list all changeable properties... +% +% hEditbox = uicontrol('style','edit'); +% jEditbox = findjobj(hEditbox,'nomenu'); +% jEditbox.setCaretColor(java.awt.Color.red); +% jEditbox.KeyTypedCallback = @myCallbackFunc; % many more callbacks where this came from... +% jEdit.requestFocus; +% +% Technical explanation & details: +% http://undocumentedmatlab.com/blog/findjobj/ +% http://undocumentedmatlab.com/blog/findjobj-gui-display-container-hierarchy/ +% +% Known issues/limitations: +% - Cannot currently process multiple container objects - just one at a time +% - Initial processing is a bit slow when the figure is laden with many UI components (so better use 'persist') +% - Passing a simple container Matlab handle is currently filtered by its position+size: should find a better way to do this +% - Matlab uipanels are not implemented as simple java panels, and so they can't be found using this utility +% - Labels have a write-only text property in java, so they can't be found using the 'property',{'Text','string'} notation +% +% Warning: +% This code heavily relies on undocumented and unsupported Matlab functionality. +% It works on Matlab 7+, but use at your own risk! +% +% Bugs and suggestions: +% Please send to Yair Altman (altmany at gmail dot com) +% +% Change log: +% 2019-07-03: Additional fix for R2018b; added separate findjobj_fast utility +% 2018-09-21: Fix for R2018b suggested by Eddie (FEX); speedup suggested by Martin Lehmann (FEX); alert if trying to use with uifigure +% 2017-04-13: Fixed two edge-cases (one suggested by H. Koch) +% 2016-04-19: Fixed edge-cases in old Matlab release; slightly improved performance even further +% 2016-04-14: Improved performance for the most common use-case (single input/output): improved code + allow inspecting groot +% 2016-04-11: Improved performance for the most common use-case (single input/output) +% 2015-01-12: Differentiate between overlapping controls (for example in different tabs); fixed case of docked figure +% 2014-10-20: Additional fixes for R2014a, R2014b +% 2014-10-13: Fixes for R2014b +% 2014-01-04: Minor fix for R2014a; check for newer FEX version up to twice a day only +% 2013-12-29: Only check for newer FEX version in non-deployed mode; handled case of invisible figure container +% 2013-10-08: Fixed minor edge case (retrieving multiple scroll-panes) +% 2013-06-30: Additional fixes for the upcoming HG2 +% 2013-05-15: Fix for the upcoming HG2 +% 2013-02-21: Fixed HG-Java warnings +% 2013-01-23: Fixed callbacks table grouping & editing bugs; added hidden properties to the properties tooltip; updated help section +% 2013-01-13: Improved callbacks table; fixed tree refresh failure; fixed: tree node-selection didn't update the props pane nor flash the selected component +% 2012-07-25: Fixes for R2012a as well as some older Matlab releases +% 2011-12-07: Fixed 'File is empty' messages in compiled apps +% 2011-11-22: Fix suggested by Ward +% 2011-02-01: Fixes for R2011a +% 2010-06-13: Fixes for R2010b; fixed download (m-file => zip-file) +% 2010-04-21: Minor fix to support combo-boxes (aka drop-down, popup-menu) on Windows +% 2010-03-17: Important release: Fixes for R2010a, debug listing, objects not found, component containers that should be ignored etc. +% 2010-02-04: Forced an EDT redraw before processing; warned if requested handle is invisible +% 2010-01-18: Found a way to display label text next to the relevant node name +% 2009-10-28: Fixed uitreenode warning +% 2009-10-27: Fixed auto-collapse of invisible container nodes; added dynamic tree tooltips & context-menu; minor fix to version-check display +% 2009-09-30: Fix for Matlab 7.0 as suggested by Oliver W; minor GUI fix (classname font) +% 2009-08-07: Fixed edge-case of missing JIDE tables +% 2009-05-24: Added support for future Matlab versions that will not support JavaFrame +% 2009-05-15: Added sanity checks for axes items +% 2009-04-28: Added 'debug' input arg; increased size tolerance 1px => 2px +% 2009-04-23: Fixed location of popupmenus (always 20px high despite what's reported by Matlab...); fixed uiinspect processing issues; added blog link; narrower action buttons +% 2009-04-09: Automatic 'nomenu' for uicontrol inputs; significant performance improvement +% 2009-03-31: Fixed position of some Java components; fixed properties tooltip; fixed node visibility indication +% 2009-02-26: Indicated components visibility (& auto-collapse non-visible containers); auto-highlight selected component; fixes in node icons, figure title & tree refresh; improved error handling; display FindJObj version update description if available +% 2009-02-24: Fixed update check; added dedicated labels icon +% 2009-02-18: Fixed compatibility with old Matlab versions +% 2009-02-08: Callbacks table fixes; use uiinspect if available; fix update check according to new FEX website +% 2008-12-17: R2008b compatibility +% 2008-09-10: Fixed minor bug as per Johnny Smith +% 2007-11-14: Fixed edge case problem with class properties tooltip; used existing object icon if available; added checkbox option to hide standard callbacks +% 2007-08-15: Fixed object naming relative property priorities; added sanity check for illegal container arg; enabled desktop (0) container; cleaned up warnings about special class objects +% 2007-08-03: Fixed minor tagging problems with a few Java sub-classes; displayed UIClassID if text/name/tag is unavailable +% 2007-06-15: Fixed problems finding HG components found by J. Wagberg +% 2007-05-22: Added 'nomenu' option for improved performance; fixed 'export handles' bug; fixed handle-finding/display bugs; "cleaner" error handling +% 2007-04-23: HTMLized classname tooltip; returned top-level figure Frame handle for figure container; fixed callbacks table; auto-checked newer version; fixed Matlab 7.2 compatibility issue; added HG objects tree +% 2007-04-19: Fixed edge case of missing figure; displayed tree hierarchy in interactive GUI if no output args; workaround for figure sub-menus invisible unless clicked +% 2007-04-04: Improved performance; returned full listing results in 4th output arg; enabled partial property names & property values; automatically filtered out container panels if children also returned; fixed finding sub-menu items +% 2007-03-20: First version posted on the MathWorks file exchange: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317 +% +% See also: +% java, handle, findobj, findall, javaGetHandles, uiinspect (on the File Exchange) + +% License to use and modify this code is granted freely to all interested, as long as the original author is +% referenced and attributed as such. The original author maintains the right to be solely associated with this work. + +% Programmed and Copyright by Yair M. Altman: altmany(at)gmail.com +% $Revision: 1.52 $ $Date: 2019/07/03 19:09:23 $ + + % Ensure Java AWT is enabled + error(javachk('awt')); + + persistent pContainer pHandles pLevels pParentIdx pPositions + + try + % Initialize + handles = handle([]); + levels = []; + parentIdx = []; + positions = []; % Java positions start at the top-left corner + %sizes = []; + listing = ''; + hg_levels = []; + hg_handles = handle([]); % HG handles are double + hg_parentIdx = []; + nomenu = false; + menuBarFoundFlag = false; + hFig = []; + + % Force an EDT redraw before processing, to ensure all uicontrols etc. are rendered + drawnow; pause(0.02); + + % Default container is the current figure's root panel + if nargin + if isempty(container) % empty container - bail out + return; + elseif ischar(container) % container skipped - this is part of the args list... + varargin = [{container}, varargin]; + origContainer = getCurrentFigure; + [container,contentSize] = getRootPanel(origContainer); + elseif isequal(container,0) % root + origContainer = handle(container); + container = com.mathworks.mde.desk.MLDesktop.getInstance.getMainFrame; + contentSize = [container.getWidth, container.getHeight]; + elseif ishghandle(container) % && ~isa(container,'java.awt.Container') + container = container(1); % another current limitation... + hFig = ancestor(container,'figure'); + oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + try hJavaFrame = get(hFig,'JavaFrame'); catch, hJavaFrame = []; end + warning(oldWarn); + if isempty(hJavaFrame) % alert if trying to use with web-based (not Java-based) uifigure + error('YMA:findjobj:NonJavaFigure', 'Findjobj only works with Java-based figures, not web-based (App Designer) uifigures'); + end + origContainer = handle(container); + if isa(origContainer,'uimenu') || isa(origContainer,'matlab.ui.container.Menu') + % getpixelposition doesn't work for menus... - damn! + varargin = {'class','MenuPeer', 'property',{'Label',strrep(get(container,'Label'),'&','')}, varargin{:}}; + elseif ~isa(origContainer, 'figure') && ~isempty(hFig) && ~isa(origContainer, 'matlab.ui.Figure') + % For a single input & output, try using the fast variant + if nargin==1 && nargout==1 + try + handles = findjobj_fast(container); + if ~isempty(handles) + try handles = handle(handles,'callbackproperties'); catch, end + return + end + catch + % never mind - proceed normally using the slower variant below... + end + end + + % See limitations section above: should find a better way to directly refer to the element's java container + try + % Note: 'PixelBounds' is undocumented and unsupported, but much faster than getpixelposition! + % ^^^^ unfortunately, its Y position is inaccurate in some cases - damn! + %size = get(container,'PixelBounds'); + pos = fix(getpixelposition(container,1)); + %varargin = {'position',pos(1:2), 'size',pos(3:4), 'not','class','java.awt.Panel', varargin{:}}; + catch + try + figName = get(hFig,'name'); + if strcmpi(get(hFig,'number'),'on') + figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $',''); + end + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jFig = mde.getClient(figName); + if isempty(jFig), error('dummy'); end + catch + jFig = get(hJavaFrame,'FigurePanelContainer'); + end + pos = []; + try + pxsize = get(container,'PixelBounds'); + pos = [pxsize(1)+5, jFig.getHeight - (pxsize(4)-5)]; + catch + % never mind... + end + end + if size(pos,2) == 2 + pos(:,3:4) = 0; + end + if ~isempty(pos) + if isa(handle(container),'uicontrol') && strcmp(get(container,'style'),'popupmenu') + % popupmenus (combo-box dropdowns) are always 20px high + pos(2) = pos(2) + pos(4) - 20; + pos(4) = 20; + end + %varargin = {'position',pos(1:2), 'size',size(3:4)-size(1:2)-10, 'not','class','java.awt.Panel', varargin{:}}; + varargin = {'position',pos(1:2)+[0,pos(4)], 'size',pos(3:4), 'not','class','java.awt.Panel', 'nomenu', varargin{:}}; + end + elseif isempty(hFig) + hFig = handle(container); + end + [container,contentSize] = getRootPanel(hFig); + elseif isjava(container) + % Maybe a java container obj (will crash otherwise) + origContainer = container; + contentSize = [container.getWidth, container.getHeight]; + else + error('YMA:findjobj:IllegalContainer','Input arg does not appear to be a valid GUI object'); + end + else + % Default container = current figure + origContainer = getCurrentFigure; + [container,contentSize] = getRootPanel(origContainer); + end + + % Check persistency + if isequal(pContainer,container) + % persistency requested and the same container is reused, so reuse the hierarchy information + [handles,levels,parentIdx,positions] = deal(pHandles, pLevels, pParentIdx, pPositions); + else + % Pre-allocate space of complex data containers for improved performance + handles = repmat(handles,1,1000); + positions = zeros(1000,2); + + % Check whether to skip menu processing + nomenu = paramSupplied(varargin,'nomenu'); + + % Traverse the container hierarchy and extract the elements within + traverseContainer(container,0,1); + + % Remove unnecessary pre-allocated elements + dataLen = length(levels); + handles (dataLen+1:end) = []; + positions(dataLen+1:end,:) = []; + end + + % Process persistency check before any filtering is done + if paramSupplied(varargin,'persist') + [pContainer, pHandles, pLevels, pParentIdx, pPositions] = deal(container,handles,levels,parentIdx,positions); + end + + % Save data for possible future use in presentObjectTree() below + allHandles = handles; + allLevels = levels; + allParents = parentIdx; + selectedIdx = 1:length(handles); + %[positions(:,1)-container.getX, container.getHeight - positions(:,2)] + + % Debug-list all found compponents and their positions + if paramSupplied(varargin,'debug') + for origHandleIdx = 1 : length(allHandles) + thisObj = handles(origHandleIdx); + pos = sprintf('%d,%d %dx%d',[positions(origHandleIdx,:) getWidth(thisObj) getHeight(thisObj)]); + disp([repmat(' ',1,levels(origHandleIdx)) '[' pos '] ' char(toString(thisObj))]); + end + end + + % Process optional args + % Note: positions is NOT returned since it's based on java coord system (origin = top-left): will confuse Matlab users + processArgs(varargin{:}); + + % De-cell and trim listing, if only one element was found (no use for indented listing in this case) + if iscell(listing) && length(listing)==1 + listing = strtrim(listing{1}); + end + + % If no output args and no listing requested, present the FINDJOBJ interactive GUI + if nargout == 0 && isempty(listing) + + % Get all label positions + hg_labels = []; + labelPositions = getLabelsJavaPos(container); + + % Present the GUI (object tree) + if ~isempty(container) + presentObjectTree(); + else + warnInvisible(varargin{:}); + end + + % Display the listing, if this was specifically requested yet no relevant output arg was specified + elseif nargout < 4 && ~isempty(listing) + if ~iscell(listing) + disp(listing); + else + for listingIdx = 1 : length(listing) + disp(listing{listingIdx}); + end + end + end + + % If the number of output handles does not match the number of inputs, try to match via tooltips + if nargout && numel(handles) ~= numel(origContainer) + newHandles = handle([]); + switchHandles = false; + handlesToCheck = handles; + if isempty(handles) + handlesToCheck = allHandles; + end + for origHandleIdx = 1 : numel(origContainer) + try + thisContainer = origContainer(origHandleIdx); + if isa(thisContainer,'figure') || isa(thisContainer,'matlab.ui.Figure') + break; + end + try + newHandles(origHandleIdx) = handlesToCheck(origHandleIdx); %#ok + catch + % maybe no corresponding handle in [handles] + end + + % Assign a new random tooltip to the original (Matlab) handle + oldTooltip = get(thisContainer,'Tooltip'); + newTooltip = num2str(rand,99); + try + set(thisContainer,'TooltipString',newTooltip); + catch + set(thisContainer,'Tooltip',newTooltip); + end + drawnow; % force the Java handle to sync with the Matlab prop-change + try + % Search for a Java handle that has the newly-generated tooltip + for newHandleIdx = 1 : numel(handlesToCheck) + testTooltip = ''; + thisHandle = handlesToCheck(newHandleIdx); + try + testTooltip = char(thisHandle.getToolTipText); + catch + try testTooltip = char(thisHandle.getTooltipText); catch, end + end + if isempty(testTooltip) + % One more attempt - assume it's enclosed by a scroll-pane + try testTooltip = char(thisHandle.getViewport.getView.getToolTipText); catch, end + end + if strcmp(testTooltip, newTooltip) + newHandles(origHandleIdx) = thisHandle; + switchHandles = true; + break; + end + end + catch + % never mind - skip to the next handle + end + set(thisContainer,'Tooltip',oldTooltip); + catch + % never mind - skip to the next handle (maybe handle doesn't have a tooltip prop) + end + end + if switchHandles + handles = newHandles; + end + end + + % Display a warning if the requested handle was not found because it's invisible + if nargout && isempty(handles) + warnInvisible(varargin{:}); + end + + return; %debug point + + catch + % 'Cleaner' error handling - strip the stack info etc. + err = lasterror; %#ok + err.message = regexprep(err.message,'Error using ==> [^\n]+\n',''); + if isempty(findstr(mfilename,err.message)) + % Indicate error origin, if not already stated within the error message + err.message = [mfilename ': ' err.message]; + end + rethrow(err); + end + + %% Display a warning if the requested handle was not found because it's invisible + function warnInvisible(varargin) + try + if strcmpi(get(hFig,'Visible'),'off') + pos = get(hFig,'Position'); + set(hFig, 'Position',pos-[5000,5000,0,0], 'Visible','on'); + drawnow; pause(0.01); + [handles,levels,parentIdx,listing] = findjobj(origContainer,varargin{:}); + set(hFig, 'Position',pos, 'Visible','off'); + end + catch + % ignore - move on... + end + try + stk = dbstack; + stkNames = {stk.name}; + OutputFcnIdx = find(~cellfun(@isempty,regexp(stkNames,'_OutputFcn'))); + if ~isempty(OutputFcnIdx) + OutputFcnName = stkNames{OutputFcnIdx}; + warning('YMA:FindJObj:OutputFcn',['No Java reference was found for the requested handle, because the figure is still invisible in ' OutputFcnName '()']); + elseif ishandle(origContainer) && isprop(origContainer,'Visible') && strcmpi(get(origContainer,'Visible'),'off') + warning('YMA:FindJObj:invisibleHandle','No Java reference was found for the requested handle, probably because it is still invisible'); + end + catch + % Never mind... + end + end + + %% Check existence of a (case-insensitive) optional parameter in the params list + function [flag,idx] = paramSupplied(paramsList,paramName) + %idx = find(~cellfun('isempty',regexpi(paramsList(cellfun(@ischar,paramsList)),['^-?' paramName]))); + idx = find(~cellfun('isempty',regexpi(paramsList(cellfun('isclass',paramsList,'char')),['^-?' paramName]))); % 30/9/2009 fix for ML 7.0 suggested by Oliver W + flag = any(idx); + end + + %% Get current figure (even if its 'HandleVisibility' property is 'off') + function curFig = getCurrentFigure + oldShowHidden = get(0,'ShowHiddenHandles'); + set(0,'ShowHiddenHandles','on'); % minor fix per Johnny Smith + curFig = gcf; + set(0,'ShowHiddenHandles',oldShowHidden); + end + + %% Get Java reference to top-level (root) panel - actually, a reference to the java figure + function [jRootPane,contentSize] = getRootPanel(hFig) + try + contentSize = [0,0]; % initialize + jRootPane = hFig; + figName = get(hFig,'name'); + if strcmpi(get(hFig,'number'),'on') + figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $',''); + end + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jFigPanel = mde.getClient(figName); + jRootPane = jFigPanel; + jRootPane = jFigPanel.getRootPane; + catch + try + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jFrame = get(hFig,'JavaFrame'); + jFigPanel = get(jFrame,'FigurePanelContainer'); + jRootPane = jFigPanel; + jRootPane = jFigPanel.getComponent(0).getRootPane; + catch + % Never mind + end + end + try + % If invalid RootPane - try another method... + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jFrame = get(hFig,'JavaFrame'); + jAxisComponent = get(jFrame,'AxisComponent'); + jRootPane = jAxisComponent.getParent.getParent.getRootPane; + catch + % Never mind + end + try + % If invalid RootPane, retry up to N times + tries = 10; + while isempty(jRootPane) && tries>0 % might happen if figure is still undergoing rendering... + drawnow; pause(0.001); + tries = tries - 1; + jRootPane = jFigPanel.getComponent(0).getRootPane; + end + + % If still invalid, use FigurePanelContainer which is good enough in 99% of cases... (menu/tool bars won't be accessible, though) + if isempty(jRootPane) + jRootPane = jFigPanel; + end + contentSize = [jRootPane.getWidth, jRootPane.getHeight]; + + % Try to get the ancestor FigureFrame + jRootPane = jRootPane.getTopLevelAncestor; + catch + % Never mind - FigurePanelContainer is good enough in 99% of cases... (menu/tool bars won't be accessible, though) + end + end + + %% Traverse the container hierarchy and extract the elements within + function traverseContainer(jcontainer,level,parent) + persistent figureComponentFound menuRootFound + + % Record the data for this node + %disp([repmat(' ',1,level) '<= ' char(jcontainer.toString)]) + thisIdx = length(levels) + 1; + levels(thisIdx) = level; + parentIdx(thisIdx) = parent; + try newHandle = handle(jcontainer,'callbackproperties'); catch, newHandle = handle(jcontainer); end + try handles(thisIdx) = newHandle; catch, handles = newHandle; end + try + positions(thisIdx,:) = getXY(jcontainer); + %sizes(thisIdx,:) = [jcontainer.getWidth, jcontainer.getHeight]; + catch + positions(thisIdx,:) = [0,0]; + %sizes(thisIdx,:) = [0,0]; + end + if level>0 + positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:); + if ~figureComponentFound && ... + strcmp(jcontainer.getName,'fComponentContainer') && ... + isa(jcontainer,'com.mathworks.hg.peer.FigureComponentContainer') % there are 2 FigureComponentContainers - only process one... + + % restart coordinate system, to exclude menu & toolbar areas + positions(thisIdx,:) = positions(thisIdx,:) - [jcontainer.getRootPane.getX, jcontainer.getRootPane.getY]; + figureComponentFound = true; + end + elseif level==1 + positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:); + else + % level 0 - initialize flags used later + figureComponentFound = false; + menuRootFound = false; + end + parentId = length(parentIdx); + + % Traverse Menu items, unless the 'nomenu' option was requested + if ~nomenu + try + for child = 1 : getNumMenuComponents(jcontainer) + traverseContainer(jcontainer.getMenuComponent(child-1),level+1,parentId); + end + catch + % Probably not a Menu container, but maybe a top-level JMenu, so discard duplicates + %if isa(handles(end).java,'javax.swing.JMenuBar') + if ~menuRootFound && strcmp(class(java(handles(end))),'javax.swing.JMenuBar') %faster... + if removeDuplicateNode(thisIdx) + menuRootFound = true; + return; + end + end + end + end + + % Now recursively process all this node's children (if any), except menu items if so requested + %if isa(jcontainer,'java.awt.Container') + try % try-catch is faster than checking isa(jcontainer,'java.awt.Container')... + %if jcontainer.getComponentCount, jcontainer.getComponents, end + if ~nomenu || menuBarFoundFlag || isempty(strfind(class(jcontainer),'FigureMenuBar')) + lastChildComponent = java.lang.Object; + child = 0; + while (child < jcontainer.getComponentCount) + childComponent = jcontainer.getComponent(child); + % Looping over menus sometimes causes jcontainer to get mixed up (probably a JITC bug), so identify & fix + if isequal(childComponent,lastChildComponent) + child = child + 1; + childComponent = jcontainer.getComponent(child); + end + lastChildComponent = childComponent; + %disp([repmat(' ',1,level) '=> ' num2str(child) ': ' char(class(childComponent))]) + traverseContainer(childComponent,level+1,parentId); + child = child + 1; + end + else + menuBarFoundFlag = true; % use this flag to skip further testing for FigureMenuBar + end + catch + % do nothing - probably not a container + %dispError + end + + % ...and yet another type of child traversal... + try + if ~isdeployed % prevent 'File is empty' messages in compiled apps + jc = jcontainer.java; + else + jc = jcontainer; + end + for child = 1 : jc.getChildCount + traverseContainer(jc.getChildAt(child-1),level+1,parentId); + end + catch + % do nothing - probably not a container + %dispError + end + + % TODO: Add axis (plot) component handles + end + + %% Get the XY location of a Java component + function xy = getXY(jcontainer) + % Note: getX/getY are better than get(..,'X') (mem leaks), + % ^^^^ but sometimes they fail and revert to getx.m ... + % Note2: try awtinvoke() catch is faster than checking ismethod()... + % Note3: using AWTUtilities.invokeAndWait() directly is even faster than awtinvoke()... + try %if ismethod(jcontainer,'getX') + %positions(thisIdx,:) = [jcontainer.getX, jcontainer.getY]; + cls = getClass(jcontainer); + location = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getLocation',[]),[]); + x = location.getX; + y = location.getY; + catch %else + try + x = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getX',[]),[]); + y = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getY',[]),[]); + catch + try + x = awtinvoke(jcontainer,'getX()'); + y = awtinvoke(jcontainer,'getY()'); + catch + x = get(jcontainer,'X'); + y = get(jcontainer,'Y'); + end + end + end + %positions(thisIdx,:) = [x, y]; + xy = [x,y]; + end + + %% Get the number of menu sub-elements + function numMenuComponents = getNumMenuComponents(jcontainer) + + % The following line will raise an Exception for anything except menus + numMenuComponents = jcontainer.getMenuComponentCount; + + % No error so far, so this must be a menu container... + % Note: Menu subitems are not visible until the top-level (root) menu gets initial focus... + % Try several alternatives, until we get a non-empty menu (or not...) + % TODO: Improve performance - this takes WAY too long... + if jcontainer.isTopLevelMenu && (numMenuComponents==0) + jcontainer.requestFocus; + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + jcontainer.setSelected(true); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + jcontainer.doClick; % needed in order to populate the sub-menu components + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; %pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + jcontainer.doClick; % close menu by re-clicking... + if (numMenuComponents == 0) + drawnow; %pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + end + else + % ok - found sub-items + % Note: no need to close menu since this will be done when focus moves to the FindJObj window + %jcontainer.doClick; % close menu by re-clicking... + end + end + end + jcontainer.setSelected(false); % de-select the menu + end + end + end + end + + %% Remove a specific tree node's data + function nodeRemovedFlag = removeDuplicateNode(thisIdx) + nodeRemovedFlag = false; + for idx = 1 : thisIdx-1 + if isequal(handles(idx),handles(thisIdx)) + levels(thisIdx) = []; + parentIdx(thisIdx) = []; + handles(thisIdx) = []; + positions(thisIdx,:) = []; + %sizes(thisIdx,:) = []; + nodeRemovedFlag = true; + return; + end + end + end + + %% Process optional args + function processArgs(varargin) + + % Initialize + invertFlag = false; + listing = ''; + + % Loop over all optional args + while ~isempty(varargin) && ~isempty(handles) + + % Process the arg (and all its params) + foundIdx = 1 : length(handles); + if iscell(varargin{1}), varargin{1} = varargin{1}{1}; end + if ~isempty(varargin{1}) && varargin{1}(1)=='-' + varargin{1}(1) = []; + end + switch lower(varargin{1}) + case 'not' + invertFlag = true; + case 'position' + [varargin,foundIdx] = processPositionArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'size' + [varargin,foundIdx] = processSizeArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'class' + [varargin,foundIdx] = processClassArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'property' + [varargin,foundIdx] = processPropertyArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'depth' + [varargin,foundIdx] = processDepthArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'flat' + varargin = {'depth',0, varargin{min(2:end):end}}; + [varargin,foundIdx] = processDepthArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case {'print','list'} + [varargin,listing] = processPrintArgs(varargin{:}); + case {'persist','nomenu','debug'} + % ignore - already handled in main function above + otherwise + error('YMA:findjobj:IllegalOption',['Option ' num2str(varargin{1}) ' is not a valid option. Type ''help ' mfilename ''' for the full options list.']); + end + + % If only parent-child pairs found + foundIdx = find(foundIdx); + if ~isempty(foundIdx) && isequal(parentIdx(foundIdx(2:2:end)),foundIdx(1:2:end)) + % Return just the children (the parent panels are uninteresting) + foundIdx(1:2:end) = []; + end + + % If several possible handles were found and the first is the container of the second + if length(foundIdx) == 2 && isequal(handles(foundIdx(1)).java, handles(foundIdx(2)).getParent) + % Discard the uninteresting component container + foundIdx(1) = []; + end + + % Filter the results + selectedIdx = selectedIdx(foundIdx); + handles = handles(foundIdx); + levels = levels(foundIdx); + parentIdx = parentIdx(foundIdx); + positions = positions(foundIdx,:); + + % Remove this arg and proceed to the next one + varargin(1) = []; + + end % Loop over all args + end + + %% Process 'print' option + function [varargin,listing] = processPrintArgs(varargin) + if length(varargin)<2 || ischar(varargin{2}) + % No second arg given, so use the first available element + listingContainer = handles(1); %#ok - used in evalc below + else + % Get the element to print from the specified second arg + if isnumeric(varargin{2}) && (varargin{2} == fix(varargin{2})) % isinteger doesn't work on doubles... + if (varargin{2} > 0) && (varargin{2} <= length(handles)) + listingContainer = handles(varargin{2}); %#ok - used in evalc below + elseif varargin{2} > 0 + error('YMA:findjobj:IllegalPrintFilter','Print filter index %g > number of available elements (%d)',varargin{2},length(handles)); + else + error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or positive numeric index into handles'); + end + elseif ismethod(varargin{2},'list') + listingContainer = varargin{2}; %#ok - used in evalc below + else + error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or numeric index into handles'); + end + varargin(2) = []; + end + + % use evalc() to capture output into a Matlab variable + %listing = evalc('listingContainer.list'); + + % Better solution: loop over all handles and process them one by one + listing = cell(length(handles),1); + for componentIdx = 1 : length(handles) + listing{componentIdx} = [repmat(' ',1,levels(componentIdx)) char(handles(componentIdx).toString)]; + end + end + + %% Process 'position' option + function [varargin,foundIdx] = processPositionArgs(varargin) + if length(varargin)>1 + positionFilter = varargin{2}; + %if (isjava(positionFilter) || iscom(positionFilter)) && ismethod(positionFilter,'getLocation') + try % try-catch is faster... + % Java/COM object passed - get its position + positionFilter = positionFilter.getLocation; + filterXY = [positionFilter.getX, positionFilter.getY]; + catch + if ~isscalar(positionFilter) + % position vector passed + if (length(positionFilter)>=2) && isnumeric(positionFilter) + % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left... + %positionFilter = java.awt.Point(positionFilter(1), container.getHeight - positionFilter(2)); + filterXY = [container.getX + positionFilter(1), container.getY + contentSize(2) - positionFilter(2)]; + + % Check for full Matlab position vector (x,y,w,h) + %if (length(positionFilter)==4) + % varargin{end+1} = 'size'; + % varargin{end+1} = fix(positionFilter(3:4)); + %end + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + elseif length(varargin)>2 + % x,y passed as separate arg values + if isnumeric(positionFilter) && isnumeric(varargin{3}) + % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left... + %positionFilter = java.awt.Point(positionFilter, container.getHeight - varargin{3}); + filterXY = [container.getX + positionFilter, container.getY + contentSize(2) - varargin{3}]; + varargin(3) = []; + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + end + + % Compute the required element positions in order to be eligible for a more detailed examination + % Note: based on the following constraints: 0 <= abs(elementX-filterX) + abs(elementY+elementH-filterY) < 7 + baseDeltas = [positions(:,1)-filterXY(1), positions(:,2)-filterXY(2)]; % faster than repmat()... + %baseHeight = - baseDeltas(:,2);% -abs(baseDeltas(:,1)); + %minHeight = baseHeight - 7; + %maxHeight = baseHeight + 7; + %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',positionFilter)),handles); % ARGH! - disallowed by Matlab! + %foundIdx = repmat(false,1,length(handles)); + %foundIdx(length(handles)) = false; % faster than repmat()... + foundIdx = (abs(baseDeltas(:,1)) < 7) & (abs(baseDeltas(:,2)) < 7); % & (minHeight >= 0); + %fi = find(foundIdx); + %for componentIdx = 1 : length(fi) + %foundIdx(componentIdx) = handles(componentIdx).getBounds.contains(positionFilter); + + % Search for a point no farther than 7 pixels away (prevents rounding errors) + %foundIdx(componentIdx) = handles(componentIdx).getLocationOnScreen.distanceSq(positionFilter) < 50; % fails for invisible components... + + %p = java.awt.Point(positions(componentIdx,1), positions(componentIdx,2) + handles(componentIdx).getHeight); + %foundIdx(componentIdx) = p.distanceSq(positionFilter) < 50; + + %foundIdx(componentIdx) = sum(([baseDeltas(componentIdx,1),baseDeltas(componentIdx,2)+handles(componentIdx).getHeight]).^2) < 50; + + % Following is the fastest method found to date: only eligible elements are checked in detailed + % elementHeight = handles(fi(componentIdx)).getHeight; + % foundIdx(fi(componentIdx)) = elementHeight > minHeight(fi(componentIdx)) && ... + % elementHeight < maxHeight(fi(componentIdx)); + %disp([componentIdx,elementHeight,minHeight(fi(componentIdx)),maxHeight(fi(componentIdx)),foundIdx(fi(componentIdx))]) + %end + + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'size' option + function [varargin,foundIdx] = processSizeArgs(varargin) + if length(varargin)>1 + sizeFilter = lower(varargin{2}); + %if (isjava(sizeFilter) || iscom(sizeFilter)) && ismethod(sizeFilter,'getSize') + try % try-catch is faster... + % Java/COM object passed - get its size + sizeFilter = sizeFilter.getSize; + filterWidth = sizeFilter.getWidth; + filterHeight = sizeFilter.getHeight; + catch + if ~isscalar(sizeFilter) + % size vector passed + if (length(sizeFilter)>=2) && isnumeric(sizeFilter) + %sizeFilter = java.awt.Dimension(sizeFilter(1),sizeFilter(2)); + filterWidth = sizeFilter(1); + filterHeight = sizeFilter(2); + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + elseif length(varargin)>2 + % w,h passed as separate arg values + if isnumeric(sizeFilter) && isnumeric(varargin{3}) + %sizeFilter = java.awt.Dimension(sizeFilter,varargin{3}); + filterWidth = sizeFilter; + filterHeight = varargin{3}; + varargin(3) = []; + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + end + %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',sizeFilter)),handles); % ARGH! - disallowed by Matlab! + foundIdx(length(handles)) = false; % faster than repmat()... + for componentIdx = 1 : length(handles) + %foundIdx(componentIdx) = handles(componentIdx).getSize.equals(sizeFilter); + % Allow a 2-pixel tollerance to account for non-integer pixel sizes + foundIdx(componentIdx) = abs(handles(componentIdx).getWidth - filterWidth) <= 3 && ... % faster than getSize.equals() + abs(handles(componentIdx).getHeight - filterHeight) <= 3; + end + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'class' option + function [varargin,foundIdx] = processClassArgs(varargin) + if length(varargin)>1 + classFilter = varargin{2}; + %if ismethod(classFilter,'getClass') + try % try-catch is faster... + classFilter = char(classFilter.getClass); + catch + if ~ischar(classFilter) + error('YMA:findjobj:IllegalClassFilter','Class filter must be a java object, class or string'); + end + end + + % Now convert all java classes to java.lang.Strings and compare to the requested filter string + try + foundIdx(length(handles)) = false; % faster than repmat()... + jClassFilter = java.lang.String(classFilter).toLowerCase; + for componentIdx = 1 : length(handles) + % Note: JVM 1.5's String.contains() appears slightly slower and is available only since Matlab 7.2 + foundIdx(componentIdx) = handles(componentIdx).getClass.toString.toLowerCase.indexOf(jClassFilter) >= 0; + end + catch + % Simple processing: slower since it does extra processing within opaque.char() + for componentIdx = 1 : length(handles) + % Note: using @toChar is faster but returns java String, not a Matlab char + foundIdx(componentIdx) = ~isempty(regexpi(char(handles(componentIdx).getClass),classFilter)); + end + end + + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'property' option + function [varargin,foundIdx] = processPropertyArgs(varargin) + if length(varargin)>1 + propertyName = varargin{2}; + if iscell(propertyName) + if length(propertyName) == 2 + propertyVal = propertyName{2}; + propertyName = propertyName{1}; + elseif length(propertyName) == 1 + propertyName = propertyName{1}; + else + error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}'); + end + end + if ~ischar(propertyName) + error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}'); + end + propertyName = lower(propertyName); + %foundIdx = arrayfun(@(h)isprop(h,propertyName),handles); % ARGH! - disallowed by Matlab! + foundIdx(length(handles)) = false; % faster than repmat()... + + % Split processing depending on whether a specific property value was requested (ugly but faster...) + if exist('propertyVal','var') + for componentIdx = 1 : length(handles) + try + % Find out whether this element has the specified property + % Note: findprop() and its return value schema.prop are undocumented and unsupported! + prop = findprop(handles(componentIdx),propertyName); % faster than isprop() & enables partial property names + + % If found, compare it to the actual element's property value + foundIdx(componentIdx) = ~isempty(prop) && isequal(get(handles(componentIdx),prop.Name),propertyVal); + catch + % Some Java classes have a write-only property (like LabelPeer with 'Text'), so we end up here + % In these cases, simply assume that the property value doesn't match and continue + foundIdx(componentIdx) = false; + end + end + else + for componentIdx = 1 : length(handles) + try + % Find out whether this element has the specified property + % Note: findprop() and its return value schema.prop are undocumented and unsupported! + foundIdx(componentIdx) = ~isempty(findprop(handles(componentIdx),propertyName)); + catch + foundIdx(componentIdx) = false; + end + end + end + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'depth' option + function [varargin,foundIdx] = processDepthArgs(varargin) + if length(varargin)>1 + level = varargin{2}; + if ~isnumeric(level) + error('YMA:findjobj:IllegalDepthFilter','Depth filter must be a number (=maximal element depth)'); + end + foundIdx = (levels <= level); + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Convert property data into a string + function data = charizeData(data) + if isa(data,'com.mathworks.hg.types.HGCallback') + data = get(data,'Callback'); + end + if ~ischar(data) && ~isa(data,'java.lang.String') + newData = strtrim(evalc('disp(data)')); + try + newData = regexprep(newData,' +',' '); + newData = regexprep(newData,'Columns \d+ through \d+\s',''); + newData = regexprep(newData,'Column \d+\s',''); + catch + %never mind... + end + if iscell(data) + newData = ['{ ' newData ' }']; + elseif isempty(data) + newData = ''; + elseif isnumeric(data) || islogical(data) || any(ishandle(data)) || numel(data) > 1 %&& ~isscalar(data) + newData = ['[' newData ']']; + end + data = newData; + elseif ~isempty(data) + data = ['''' data '''']; + end + end % charizeData + + %% Prepare a hierarchical callbacks table data + function setProp(list,name,value,category) + prop = eval('com.jidesoft.grid.DefaultProperty();'); % prevent JIDE alert by run-time (not load-time) evaluation + prop.setName(name); + prop.setType(java.lang.String('').getClass); + prop.setValue(value); + prop.setEditable(true); + prop.setExpert(true); + %prop.setCategory(['' category ' callbacks']); + prop.setCategory([category ' callbacks']); + list.add(prop); + end % getTreeData + + %% Prepare a hierarchical callbacks table data + function list = getTreeData(data) + list = java.util.ArrayList(); + names = regexprep(data,'([A-Z][a-z]+).*','$1'); + %hash = java.util.Hashtable; + others = {}; + for propIdx = 1 : size(data,1) + if (propIdx < size(data,1) && strcmp(names{propIdx},names{propIdx+1})) || ... + (propIdx > 1 && strcmp(names{propIdx},names{propIdx-1})) + % Child callback property + setProp(list,data{propIdx,1},data{propIdx,2},names{propIdx}); + else + % Singular callback property => Add to 'Other' category at bottom of the list + others(end+1,:) = data(propIdx,:); %#ok + end + end + for propIdx = 1 : size(others,1) + setProp(list,others{propIdx,1},others{propIdx,2},'Other'); + end + end % getTreeData + + %% Get callbacks table data + function [cbData, cbHeaders, cbTableEnabled] = getCbsData(obj, stripStdCbsFlag) + % Initialize + cbData = {'(no callbacks)'}; + cbHeaders = {'Callback name'}; + cbTableEnabled = false; + cbNames = {}; + + try + try + classHdl = classhandle(handle(obj)); + cbNames = get(classHdl.Events,'Name'); + if ~isempty(cbNames) && ~iscom(obj) %only java-based please... + cbNames = strcat(cbNames,'Callback'); + end + propNames = get(classHdl.Properties,'Name'); + catch + % Try to interpret as an MCOS class object + try + oldWarn = warning('off','MATLAB:structOnObject'); + dataFields = struct(obj); + warning(oldWarn); + catch + dataFields = get(obj); + end + propNames = fieldnames(dataFields); + end + propCbIdx = []; + if ischar(propNames), propNames={propNames}; end % handle case of a single callback + if ~isempty(propNames) + propCbIdx = find(~cellfun(@isempty,regexp(propNames,'(Fcn|Callback)$'))); + cbNames = unique([cbNames; propNames(propCbIdx)]); %#ok logical is faster but less debuggable... + end + if ~isempty(cbNames) + if stripStdCbsFlag + cbNames = stripStdCbs(cbNames); + end + if iscell(cbNames) + cbNames = sort(cbNames); + if size(cbNames,1) < size(cbNames,2) + cbNames = cbNames'; + end + end + hgHandleFlag = 0; try hgHandleFlag = ishghandle(obj); catch, end %#ok + try + obj = handle(obj,'CallbackProperties'); + catch + hgHandleFlag = 1; + end + if hgHandleFlag + % HG handles don't allow CallbackProperties - search only for *Fcn + %cbNames = propNames(propCbIdx); + end + if iscom(obj) + cbs = obj.eventlisteners; + if ~isempty(cbs) + cbNamesRegistered = cbs(:,1); + cbData = setdiff(cbNames,cbNamesRegistered); + %cbData = charizeData(cbData); + if size(cbData,2) > size(cbData(1)) + cbData = cbData'; + end + cbData = [cbData, cellstr(repmat(' ',length(cbData),1))]; + cbData = [cbData; cbs]; + [sortedNames, sortedIdx] = sort(cbData(:,1)); + sortedCbs = cellfun(@charizeData,cbData(sortedIdx,2),'un',0); + cbData = [sortedNames, sortedCbs]; + else + cbData = [cbNames, cellstr(repmat(' ',length(cbNames),1))]; + end + elseif iscell(cbNames) + cbNames = sort(cbNames); + %cbData = [cbNames, get(obj,cbNames)']; + cbData = cbNames; + oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty'); + warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty'); + for idx = 1 : length(cbNames) + try + cbData{idx,2} = charizeData(get(obj,cbNames{idx})); + catch + cbData{idx,2} = '(callback value inaccessible)'; + end + end + warning(oldWarn); + else % only one event callback + %cbData = {cbNames, get(obj,cbNames)'}; + %cbData{1,2} = charizeData(cbData{1,2}); + try + cbData = {cbNames, charizeData(get(obj,cbNames))}; + catch + cbData = {cbNames, '(callback value inaccessible)'}; + end + end + cbHeaders = {'Callback name','Callback value'}; + cbTableEnabled = true; + end + catch + % never mind - use default (empty) data + end + end % getCbsData + + %% Get relative (0.0-1.0) divider location + function divLocation = getRalativeDivlocation(jDiv) + divLocation = jDiv.getDividerLocation; + if divLocation > 1 % i.e. [pixels] + visibleRect = jDiv.getVisibleRect; + if jDiv.getOrientation == 0 % vertical + start = visibleRect.getY; + extent = visibleRect.getHeight - start; + else + start = visibleRect.getX; + extent = visibleRect.getWidth - start; + end + divLocation = (divLocation - start) / extent; + end + end % getRalativeDivlocation + + %% Try to set a treenode icon based on a container's icon + function setTreeNodeIcon(treenode,container) + try + iconImage = []; + iconImage = container.getIcon; + if ~isempty(findprop(handle(iconImage),'Image')) % get(iconImage,'Image') is easier but leaks memory... + iconImage = iconImage.getImage; + else + a=b; %#ok cause an error + end + catch + try + iconImage = container.getIconImage; + catch + try + if ~isempty(iconImage) + ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment; + gd = ge.getDefaultScreenDevice; + gc = gd.getDefaultConfiguration; + image = gc.createCompatibleImage(iconImage.getIconWidth, iconImage.getIconHeight); % a BufferedImage object + g = image.createGraphics; + iconImage.paintIcon([], g, 0, 0); + g.dispose; + iconImage = image; + end + catch + % never mind... + end + end + end + if ~isempty(iconImage) + iconImage = setIconSize(iconImage); + treenode.setIcon(iconImage); + end + end % setTreeNodeIcon + + %% Present the object hierarchy tree + function presentObjectTree() + persistent lastVersionCheck + if isempty(lastVersionCheck), lastVersionCheck = now-1; end + + import java.awt.* + import javax.swing.* + hTreeFig = findall(0,'tag','findjobjFig'); + iconpath = [matlabroot, '/toolbox/matlab/icons/']; + cbHideStd = 0; % Initial state of the cbHideStdCbs checkbox + if isempty(hTreeFig) + % Prepare the figure + hTreeFig = figure('tag','findjobjFig','menuBar','none','toolBar','none','Name','FindJObj','NumberTitle','off','handleVisibility','off','IntegerHandle','off'); + figIcon = ImageIcon([iconpath 'tool_legend.gif']); + drawnow; + try + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jTreeFig = mde.getClient('FindJObj').getTopLevelAncestor; + jTreeFig.setIcon(figIcon); + catch + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jTreeFig = get(hTreeFig,'JavaFrame'); + jTreeFig.setFigureIcon(figIcon); + end + vsplitPaneLocation = 0.8; + hsplitPaneLocation = 0.5; + else + % Remember cbHideStdCbs checkbox & dividers state for later + userdata = get(hTreeFig, 'userdata'); + try cbHideStd = userdata.cbHideStdCbs.isSelected; catch, end %#ok + try + vsplitPaneLocation = getRalativeDivlocation(userdata.vsplitPane); + hsplitPaneLocation = getRalativeDivlocation(userdata.hsplitPane); + catch + vsplitPaneLocation = 0.8; + hsplitPaneLocation = 0.5; + end + + % Clear the figure and redraw + clf(hTreeFig); + figure(hTreeFig); % bring to front + end + + % Traverse all HG children, if root container was a HG handle + if ishghandle(origContainer) %&& ~isequal(origContainer,container) + traverseHGContainer(origContainer,0,0); + end + + % Prepare the tree pane + warning('off','MATLAB:uitreenode:MigratingFunction'); % R2008b compatibility + warning('off','MATLAB:uitreenode:DeprecatedFunction'); % R2008a compatibility + tree_h = com.mathworks.hg.peer.UITreePeer; + try tree_h = javaObjectEDT(tree_h); catch, end + tree_hh = handle(tree_h,'CallbackProperties'); + hasChildren = sum(allParents==1) > 1; + icon = [iconpath 'upfolder.gif']; + [rootName, rootTitle] = getNodeName(container); + try + root = uitreenode('v0', handle(container), rootName, icon, ~hasChildren); + catch % old matlab version don't have the 'v0' option + root = uitreenode(handle(container), rootName, icon, ~hasChildren); + end + setTreeNodeIcon(root,container); % constructor must accept a char icon unfortunately, so need to do this afterwards... + if ~isempty(rootTitle) + set(hTreeFig, 'Name',['FindJObj - ' char(rootTitle)]); + end + nodedata.idx = 1; + nodedata.obj = container; + set(root,'userdata',nodedata); + root.setUserObject(container); + setappdata(root,'childHandle',container); + tree_h.setRoot(root); + treePane = tree_h.getScrollPane; + treePane.setMinimumSize(Dimension(50,50)); + jTreeObj = treePane.getViewport.getComponent(0); + jTreeObj.setShowsRootHandles(true) + jTreeObj.getSelectionModel.setSelectionMode(javax.swing.tree.TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); + %jTreeObj.setVisible(0); + %jTreeObj.getCellRenderer.setLeafIcon([]); + %jTreeObj.getCellRenderer.setOpenIcon(figIcon); + %jTreeObj.getCellRenderer.setClosedIcon([]); + treePanel = JPanel(BorderLayout); + treePanel.add(treePane, BorderLayout.CENTER); + progressBar = JProgressBar(0); + progressBar.setMaximum(length(allHandles) + length(hg_handles)); % = # of all nodes + treePanel.add(progressBar, BorderLayout.SOUTH); + + % Prepare the image pane +%disable for now, until we get it working... +%{ + try + hFig = ancestor(origContainer,'figure'); + [cdata, cm] = getframe(hFig); %#ok cm unused + tempfname = [tempname '.png']; + imwrite(cdata,tempfname); % don't know how to pass directly to BufferedImage, so use disk... + jImg = javax.imageio.ImageIO.read(java.io.File(tempfname)); + try delete(tempfname); catch end + imgPanel = JPanel(); + leftPanel = JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, imgPanel); + leftPanel.setOneTouchExpandable(true); + leftPanel.setContinuousLayout(true); + leftPanel.setResizeWeight(0.8); + catch + leftPanel = treePanel; + end +%} + leftPanel = treePanel; + + % Prepare the inspector pane + classNameLabel = JLabel([' ' char(class(container))]); + classNameLabel.setForeground(Color.blue); + updateNodeTooltip(container, classNameLabel); + inspectorPanel = JPanel(BorderLayout); + inspectorPanel.add(classNameLabel, BorderLayout.NORTH); + % TODO: Maybe uncomment the following when we add the HG tree - in the meantime it's unused (java properties are un-groupable) + %objReg = com.mathworks.services.ObjectRegistry.getLayoutRegistry; + %toolBar = awtinvoke('com.mathworks.mlwidgets.inspector.PropertyView$ToolBarStyle','valueOf(Ljava.lang.String;)','GROUPTOOLBAR'); + %inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView(objReg, toolBar); + inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView; + identifiers = disableDbstopError; %#ok "dbstop if error" causes inspect.m to croak due to a bug - so workaround + inspectorPane.setObject(container); + inspectorPane.setAutoUpdate(true); + % TODO: Add property listeners + % TODO: Display additional props + inspectorTable = inspectorPane; + try + while ~isa(inspectorTable,'javax.swing.JTable') + inspectorTable = inspectorTable.getComponent(0); + end + catch + % R2010a + inspectorTable = inspectorPane.getComponent(0).getScrollPane.getViewport.getComponent(0); + end + toolTipText = 'hover mouse over the red classname above to see the full list of properties'; + inspectorTable.setToolTipText(toolTipText); + jideTableUtils = []; + try + % Try JIDE features - see http://www.jidesoft.com/products/JIDE_Grids_Developer_Guide.pdf + com.mathworks.mwswing.MJUtilities.initJIDE; + jideTableUtils = eval('com.jidesoft.grid.TableUtils;'); % prevent JIDE alert by run-time (not load-time) evaluation + jideTableUtils.autoResizeAllColumns(inspectorTable); + inspectorTable.setRowAutoResizes(true); + inspectorTable.getModel.setShowExpert(1); + catch + % JIDE is probably unavailable - never mind... + end + inspectorPanel.add(inspectorPane, BorderLayout.CENTER); + % TODO: Add data update listeners + + % Prepare the callbacks pane + callbacksPanel = JPanel(BorderLayout); + stripStdCbsFlag = true; % initial value + [cbData, cbHeaders, cbTableEnabled] = getCbsData(container, stripStdCbsFlag); + %{ + %classHdl = classhandle(handle(container)); + %eventNames = get(classHdl.Events,'Name'); + %if ~isempty(eventNames) + % cbNames = sort(strcat(eventNames,'Callback')); + % try + % cbData = [cbNames, get(container,cbNames)']; + % catch + % % R2010a + % cbData = cbNames; + % if isempty(cbData) + % cbData = {}; + % elseif ~iscell(cbData) + % cbData = {cbData}; + % end + % for idx = 1 : length(cbNames) + % cbData{idx,2} = get(container,cbNames{idx}); + % end + % end + % cbTableEnabled = true; + %else + % cbData = {'(no callbacks)',''}; + % cbTableEnabled = false; + %end + %cbHeaders = {'Callback name','Callback value'}; + %} + try + % Use JideTable if available on this system + %callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); %#ok + %callbacksTable = eval('com.jidesoft.grid.PropertyTable(callbacksTableModel);'); % prevent JIDE alert by run-time (not load-time) evaluation + try + list = getTreeData(cbData); %#ok + model = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Auto-expand if only one category + if model.getRowCount==1 % length(model.getCategories)==1 fails for some unknown reason... + model.expandFirstLevel; + end + + %callbacksTable = eval('com.jidesoft.grid.TreeTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + callbacksTable = eval('com.jidesoft.grid.PropertyTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + %callbacksTable.expandFirstLevel; + callbacksTable.setShowsRootHandles(true); + callbacksTable.setShowTreeLines(false); + %callbacksTable.setShowNonEditable(0); %=SHOW_NONEDITABLE_NEITHER + callbacksPane = eval('com.jidesoft.grid.PropertyPane(callbacksTable);'); % prevent JIDE alert by run-time (not load-time) evaluation + callbacksPane.setShowDescription(false); + catch + callbacksTable = eval('com.jidesoft.grid.TreeTable(cbData,cbHeaders);'); % prevent JIDE alert by run-time (not load-time) evaluation + end + callbacksTable.setRowAutoResizes(true); + callbacksTable.setColumnAutoResizable(true); + callbacksTable.setColumnResizable(true); + jideTableUtils.autoResizeAllColumns(callbacksTable); + callbacksTable.setTableHeader([]); % hide the column headers since now we can resize columns with the gridline + callbacksLabel = JLabel(' Callbacks:'); % The column headers are replaced with a header label + callbacksLabel.setForeground(Color.blue); + %callbacksPanel.add(callbacksLabel, BorderLayout.NORTH); + + % Add checkbox to show/hide standard callbacks + callbacksTopPanel = JPanel; + callbacksTopPanel.setLayout(BoxLayout(callbacksTopPanel, BoxLayout.LINE_AXIS)); + callbacksTopPanel.add(callbacksLabel); + callbacksTopPanel.add(Box.createHorizontalGlue); + jcb = JCheckBox('Hide standard callbacks', cbHideStd); + set(handle(jcb,'CallbackProperties'), 'ActionPerformedCallback',{@cbHideStdCbs_Callback,callbacksTable}); + try + set(jcb, 'userdata',callbacksTable, 'tooltip','Hide standard Swing callbacks - only component-specific callbacks will be displayed'); + catch + jcb.setToolTipText('Hide standard Swing callbacks - only component-specific callbacks will be displayed'); + %setappdata(jcb,'userdata',callbacksTable); + end + callbacksTopPanel.add(jcb); + callbacksPanel.add(callbacksTopPanel, BorderLayout.NORTH); + catch + % Otherwise, use a standard Swing JTable (keep the headers to enable resizing) + callbacksTable = JTable(cbData,cbHeaders); + end + cbToolTipText = 'Callbacks may be ''strings'', @funcHandle or {@funcHandle,arg1,...}'; + callbacksTable.setToolTipText(cbToolTipText); + callbacksTable.setGridColor(inspectorTable.getGridColor); + cbNameTextField = JTextField; + cbNameTextField.setEditable(false); % ensure that the callback names are not modified... + cbNameCellEditor = DefaultCellEditor(cbNameTextField); + cbNameCellEditor.setClickCountToStart(intmax); % i.e, never enter edit mode... + callbacksTable.getColumnModel.getColumn(0).setCellEditor(cbNameCellEditor); + if ~cbTableEnabled + try callbacksTable.getColumnModel.getColumn(1).setCellEditor(cbNameCellEditor); catch, end + end + hModel = callbacksTable.getModel; + set(handle(hModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,container,callbacksTable}); + %set(hModel, 'UserData',container); + try + cbScrollPane = callbacksPane; %JScrollPane(callbacksPane); + %cbScrollPane.setHorizontalScrollBarPolicy(cbScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + catch + cbScrollPane = JScrollPane(callbacksTable); + cbScrollPane.setVerticalScrollBarPolicy(cbScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + end + callbacksPanel.add(cbScrollPane, BorderLayout.CENTER); + callbacksPanel.setToolTipText(cbToolTipText); + + % Prepare the top-bottom JSplitPanes + vsplitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, inspectorPanel, callbacksPanel); + vsplitPane.setOneTouchExpandable(true); + vsplitPane.setContinuousLayout(true); + vsplitPane.setResizeWeight(0.8); + + % Prepare the left-right JSplitPane + hsplitPane = JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, vsplitPane); + hsplitPane.setOneTouchExpandable(true); + hsplitPane.setContinuousLayout(true); + hsplitPane.setResizeWeight(0.6); + pos = getpixelposition(hTreeFig); + + % Prepare the bottom pane with all buttons + lowerPanel = JPanel(FlowLayout); + blogUrlLabel = 'Undocumented
    Matlab.com
    '; + jWebsite = createJButton(blogUrlLabel, @btWebsite_Callback, 'Visit the UndocumentedMatlab.com blog'); + jWebsite.setContentAreaFilled(0); + lowerPanel.add(jWebsite); + lowerPanel.add(createJButton('Refresh
    tree', {@btRefresh_Callback, origContainer, hTreeFig}, 'Rescan the component tree, from the root down')); + lowerPanel.add(createJButton('Export to
    workspace', {@btExport_Callback, jTreeObj, classNameLabel}, 'Export the selected component handles to workspace variable findjobj_hdls')); + lowerPanel.add(createJButton('Request
    focus', {@btFocus_Callback, jTreeObj, root}, 'Set the focus on the first selected component')); + lowerPanel.add(createJButton('Inspect
    object', {@btInspect_Callback, jTreeObj, root}, 'View the signature of all methods supported by the first selected component')); + lowerPanel.add(createJButton('Check for
    updates', {@btCheckFex_Callback}, 'Check the MathWorks FileExchange for the latest version of FindJObj')); + + % Display everything on-screen + globalPanel = JPanel(BorderLayout); + globalPanel.add(hsplitPane, BorderLayout.CENTER); + globalPanel.add(lowerPanel, BorderLayout.SOUTH); + [obj, hcontainer] = javacomponent(globalPanel, [0,0,pos(3:4)], hTreeFig); + set(hcontainer,'units','normalized'); + drawnow; + hsplitPane.setDividerLocation(hsplitPaneLocation); % this only works after the JSplitPane is displayed... + vsplitPane.setDividerLocation(vsplitPaneLocation); % this only works after the JSplitPane is displayed... + %restoreDbstopError(identifiers); + + % Refresh & resize the screenshot thumbnail +%disable for now, until we get it working... +%{ + try + hAx = axes('Parent',hTreeFig, 'units','pixels', 'position',[10,10,250,150], 'visible','off'); + axis(hAx,'image'); + image(cdata,'Parent',hAx); + axis(hAx,'off'); + set(hAx,'UserData',cdata); + set(imgPanel, 'ComponentResizedCallback',{@resizeImg, hAx}, 'UserData',lowerPanel); + imgPanel.getGraphics.drawImage(jImg, 0, 0, []); + catch + % Never mind... + end +%} + % If all handles were selected (i.e., none were filtered) then only select the first + if (length(selectedIdx) == length(allHandles)) && ~isempty(selectedIdx) + selectedIdx = 1; + end + + % Store handles for callback use + userdata.handles = allHandles; + userdata.levels = allLevels; + userdata.parents = allParents; + userdata.hg_handles = hg_handles; + userdata.hg_levels = hg_levels; + userdata.hg_parents = hg_parentIdx; + userdata.initialIdx = selectedIdx; + userdata.userSelected = false; % Indicates the user has modified the initial selections + userdata.inInit = true; + userdata.jTree = jTreeObj; + userdata.jTreePeer = tree_h; + userdata.vsplitPane = vsplitPane; + userdata.hsplitPane = hsplitPane; + userdata.classNameLabel = classNameLabel; + userdata.inspectorPane = inspectorPane; + userdata.callbacksTable = callbacksTable; + userdata.jideTableUtils = jideTableUtils; + try + userdata.cbHideStdCbs = jcb; + catch + userdata.cbHideStdCbs = []; + end + + % Update userdata for use in callbacks + try + set(tree_h,'userdata',userdata); + catch + setappdata(handle(tree_h),'userdata',userdata); + end + try + set(callbacksTable,'userdata',userdata); + catch + setappdata(callbacksTable,'userdata',userdata); + end + set(hTreeFig,'userdata',userdata); + + % Select the root node if requested + % Note: we must do so here since all other nodes except the root are processed by expandNode + if any(selectedIdx==1) + tree_h.setSelectedNode(root); + end + + % Set the initial cbHideStdCbs state + try + if jcb.isSelected + drawnow; + evd.getSource.isSelected = jcb.isSelected; + cbHideStdCbs_Callback(jcb,evd,callbacksTable); + end + catch + % never mind... + end + + % Set the callback functions + set(tree_hh, 'NodeExpandedCallback', {@nodeExpanded, tree_h}); + set(tree_hh, 'NodeSelectedCallback', {@nodeSelected, tree_h}); + + % Set the tree mouse-click callback + % Note: default actions (expand/collapse) will still be performed? + % Note: MousePressedCallback is better than MouseClickedCallback + % since it fires immediately when mouse button is pressed, + % without waiting for its release, as MouseClickedCallback does + handleTree = tree_h.getScrollPane; + jTreeObj = handleTree.getViewport.getComponent(0); + jTreeObjh = handle(jTreeObj,'CallbackProperties'); + set(jTreeObjh, 'MousePressedCallback', {@treeMousePressedCallback,tree_h}); % context (right-click) menu + set(jTreeObjh, 'MouseMovedCallback', @treeMouseMovedCallback); % mouse hover tooltips + + % Update userdata + userdata.inInit = false; + try + set(tree_h,'userdata',userdata); + catch + setappdata(handle(tree_h),'userdata',userdata); + end + set(hTreeFig,'userdata',userdata); + + % Pre-expand all rows + %treePane.setVisible(false); + expandNode(progressBar, jTreeObj, tree_h, root, 0); + %treePane.setVisible(true); + %jTreeObj.setVisible(1); + + % Hide the progressbar now that we've finished expanding all rows + try + hsplitPane.getLeftComponent.setTopComponent(treePane); + catch + % Probably not a vSplitPane on the left... + hsplitPane.setLeftComponent(treePane); + end + hsplitPane.setDividerLocation(hsplitPaneLocation); % need to do it again... + + % Set keyboard focus on the tree + jTreeObj.requestFocus; + drawnow; + + % Check for a newer version (only in non-deployed mode, and only twice a day) + if ~isdeployed && now-lastVersionCheck > 0.5 + checkVersion(); + lastVersionCheck = now; + end + + % Reset the last error + lasterr(''); %#ok + end + + %% Rresize image pane + function resizeImg(varargin) %#ok - unused (TODO: waiting for img placement fix...) + try + hPanel = varargin{1}; + hAx = varargin{3}; + lowerPanel = get(hPanel,'UserData'); + newJPos = cell2mat(get(hPanel,{'X','Y','Width','Height'})); + newMPos = [1,get(lowerPanel,'Height'),newJPos(3:4)]; + set(hAx, 'units','pixels', 'position',newMPos, 'Visible','on'); + uistack(hAx,'top'); % no good... + set(hPanel,'Opaque','off'); % also no good... + catch + % Never mind... + dispError + end + return; + end + + %% "dbstop if error" causes inspect.m to croak due to a bug - so workaround by temporarily disabling this dbstop + function identifiers = disableDbstopError + dbStat = dbstatus; + idx = find(strcmp({dbStat.cond},'error')); + identifiers = [dbStat(idx).identifier]; + if ~isempty(idx) + dbclear if error; + msgbox('''dbstop if error'' had to be disabled due to a Matlab bug that would have caused Matlab to crash.', 'FindJObj', 'warn'); + end + end + + %% Restore any previous "dbstop if error" + function restoreDbstopError(identifiers) %#ok + for itemIdx = 1 : length(identifiers) + eval(['dbstop if error ' identifiers{itemIdx}]); + end + end + + %% Recursively expand all nodes (except toolbar/menubar) in startup + function expandNode(progressBar, tree, tree_h, parentNode, parentRow) + try + if nargin < 5 + parentPath = javax.swing.tree.TreePath(parentNode.getPath); + parentRow = tree.getRowForPath(parentPath); + end + tree.expandRow(parentRow); + progressBar.setValue(progressBar.getValue+1); + numChildren = parentNode.getChildCount; + if (numChildren == 0) + pause(0.0002); % as short as possible... + drawnow; + end + nodesToUnExpand = {'FigureMenuBar','MLMenuBar','MJToolBar','Box','uimenu','uitoolbar','ScrollBar'}; + numChildren = parentNode.getChildCount; + for childIdx = 0 : numChildren-1 + childNode = parentNode.getChildAt(childIdx); + + % Pre-select the node based upon the user's FINDJOBJ filters + try + nodedata = get(childNode, 'userdata'); + try + userdata = get(tree_h, 'userdata'); + catch + userdata = getappdata(handle(tree_h), 'userdata'); + end + %fprintf('%d - %s\n',nodedata.idx,char(nodedata.obj)) + if ~ishghandle(nodedata.obj) && ~userdata.userSelected && any(userdata.initialIdx == nodedata.idx) + pause(0.0002); % as short as possible... + drawnow; + if isempty(tree_h.getSelectedNodes) + tree_h.setSelectedNode(childNode); + else + newSelectedNodes = [tree_h.getSelectedNodes, childNode]; + tree_h.setSelectedNodes(newSelectedNodes); + end + end + catch + % never mind... + dispError + end + + % Expand child node if not leaf & not toolbar/menubar + if childNode.isLeafNode + + % This is a leaf node, so simply update the progress-bar + progressBar.setValue(progressBar.getValue+1); + + else + % Expand all non-leaves + expandNode(progressBar, tree, tree_h, childNode); + + % Re-collapse toolbar/menubar etc., and also invisible containers + % Note: if we simply did nothing, progressbar would not have been updated... + try + childHandle = getappdata(childNode,'childHandle'); %=childNode.getUserObject + visible = childHandle.isVisible; + catch + visible = 1; + end + visible = visible && isempty(findstr(get(childNode,'Name'),'color="gray"')); + %if any(strcmp(childNode.getName,nodesToUnExpand)) + %name = char(childNode.getName); + if any(cellfun(@(s)~isempty(strmatch(s,char(childNode.getName))),nodesToUnExpand)) || ~visible + childPath = javax.swing.tree.TreePath(childNode.getPath); + childRow = tree.getRowForPath(childPath); + tree.collapseRow(childRow); + end + end + end + catch + % never mind... + dispError + end + end + + %% Create utility buttons + function hButton = createJButton(nameStr, handler, toolTipText) + try + jButton = javax.swing.JButton(['
    ' nameStr]); + jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); + jButton.setToolTipText(toolTipText); + try + minSize = jButton.getMinimumSize; + catch + minSize = jButton.getMinimumSize; % for HG2 - strange indeed that this is needed! + end + jButton.setMinimumSize(java.awt.Dimension(minSize.getWidth,35)); + hButton = handle(jButton,'CallbackProperties'); + set(hButton,'ActionPerformedCallback',handler); + catch + % Never mind... + a= 1; + end + end + + %% Flash a component off/on for the specified duration + % note: starts with 'on'; if numTimes is odd then ends with 'on', otherwise with 'off' + function flashComponent(jComps,delaySecs,numTimes) + persistent redBorder redBorderPanels + try + % Handle callback data from right-click (context-menu) + if iscell(numTimes) + [jComps,delaySecs,numTimes] = deal(numTimes{:}); + end + + if isempty(redBorder) % reuse if possible + redBorder = javax.swing.border.LineBorder(java.awt.Color.red,2,0); + end + for compIdx = 1 : length(jComps) + try + oldBorder{compIdx} = jComps(compIdx).getBorder; %#ok grow + catch + oldBorder{compIdx} = []; %#ok grow + end + isSettable(compIdx) = ismethod(jComps(compIdx),'setBorder'); %#ok grow + if isSettable(compIdx) + try + % some components prevent border modification: + oldBorderFlag = jComps(compIdx).isBorderPainted; + if ~oldBorderFlag + jComps(compIdx).setBorderPainted(1); + isSettable(compIdx) = jComps(compIdx).isBorderPainted; %#ok grow + jComps(compIdx).setBorderPainted(oldBorderFlag); + end + catch + % do nothing... + end + end + if compIdx > length(redBorderPanels) + redBorderPanels{compIdx} = javax.swing.JPanel; + redBorderPanels{compIdx}.setBorder(redBorder); + redBorderPanels{compIdx}.setOpaque(0); % transparent interior, red border + end + try + redBorderPanels{compIdx}.setBounds(jComps(compIdx).getBounds); + catch + % never mind - might be an HG handle + end + end + for idx = 1 : 2*numTimes + if idx>1, pause(delaySecs); end % don't pause at start + visible = mod(idx,2); + for compIdx = 1 : length(jComps) + try + jComp = jComps(compIdx); + + % Prevent Matlab crash (java buffer overflow...) + if isa(jComp,'com.mathworks.mwswing.desk.DTSplitPane') || ... + isa(jComp,'com.mathworks.mwswing.MJSplitPane') + continue; + + % HG handles are highlighted by setting their 'Selected' property + elseif isa(jComp,'uimenu') || isa(jComp,'matlab.ui.container.Menu') + if visible + oldColor = get(jComp,'ForegroundColor'); + setappdata(jComp,'findjobj_oldColor',oldColor); + set(jComp,'ForegroundColor','red'); + else + oldColor = getappdata(jComp,'findjobj_oldColor'); + set(jComp,'ForegroundColor',oldColor); + rmappdata(jComp,'ForegroundColor'); + end + + elseif ishghandle(jComp) + if visible + set(jComp,'Selected','on'); + else + set(jComp,'Selected','off'); + end + + else %if isjava(jComp) + + jParent = jComps(compIdx).getParent; + + % Most Java components allow modifying their borders + if isSettable(compIdx) + if visible + jComp.setBorder(redBorder); + try jComp.setBorderPainted(1); catch, end %#ok + else %if ~isempty(oldBorder{compIdx}) + jComp.setBorder(oldBorder{compIdx}); + end + jComp.repaint; + + % The other Java components are highlighted by a transparent red-border + % panel that is placed on top of them in their parent's space + elseif ~isempty(jParent) + if visible + jParent.add(redBorderPanels{compIdx}); + jParent.setComponentZOrder(redBorderPanels{compIdx},0); + else + jParent.remove(redBorderPanels{compIdx}); + end + jParent.repaint + end + end + catch + % never mind - try the next component (if any) + end + end + drawnow; + end + catch + % never mind... + dispError; + end + return; % debug point + end % flashComponent + + %% Select tree node + function nodeSelected(src, evd, tree) %#ok + try + if iscell(tree) + [src,node] = deal(tree{:}); + else + node = evd.getCurrentNode; + end + %nodeHandle = node.getUserObject; + nodedata = get(node,'userdata'); + nodeHandle = nodedata.obj; + try + userdata = get(src,'userdata'); + catch + try + userdata = getappdata(java(src),'userdata'); + catch + userdata = getappdata(src,'userdata'); + end + if isempty(userdata) + try userdata = get(java(src),'userdata'); catch, end + end + end + if ~isempty(nodeHandle) && ~isempty(userdata) + numSelections = userdata.jTree.getSelectionCount; + selectionPaths = userdata.jTree.getSelectionPaths; + if (numSelections == 1) + % Indicate that the user has modified the initial selection (except if this was an initial auto-selected node) + if ~userdata.inInit + userdata.userSelected = true; + try + set(src,'userdata',userdata); + catch + try + setappdata(java(src),'userdata',userdata); + catch + setappdata(src,'userdata',userdata); + end + end + end + + % Update the fully-qualified class name label + numInitialIdx = length(userdata.initialIdx); + thisHandle = nodeHandle; + try + if ~ishghandle(thisHandle) + thisHandle = java(nodeHandle); + end + catch + % never mind... + end + if ~userdata.inInit || (numInitialIdx == 1) + userdata.classNameLabel.setText([' ' char(class(thisHandle))]); + else + userdata.classNameLabel.setText([' ' num2str(numInitialIdx) 'x handles (some handles hidden by unexpanded tree nodes)']); + end + if ishghandle(thisHandle) + userdata.classNameLabel.setText(userdata.classNameLabel.getText.concat(' (HG handle)')); + end + userdata.inspectorPane.dispose; % remove props listeners - doesn't work... + updateNodeTooltip(nodeHandle, userdata.classNameLabel); + + % Update the data properties inspector pane + % Note: we can't simply use the evd nodeHandle, because this node might have been DE-selected with only one other node left selected... + %nodeHandle = selectionPaths(1).getLastPathComponent.getUserObject; + nodedata = get(selectionPaths(1).getLastPathComponent,'userdata'); + nodeHandle = nodedata.obj; + %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround + userdata.inspectorPane.setObject(thisHandle); + + % Update the callbacks table + try + stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs'); + [cbData, cbHeaders, cbTableEnabled] = getCbsData(nodeHandle, stripStdCbsFlag); %#ok cbTableEnabled unused + try + % Use JideTable if available on this system + list = getTreeData(cbData); %#ok + callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Expand if only one category + if length(callbacksTableModel.getCategories)==1 + callbacksTableModel.expandFirstLevel; + end + catch + callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); + end + set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,nodeHandle,userdata.callbacksTable}); + %set(callbacksTableModel, 'UserData',nodeHandle); + userdata.callbacksTable.setModel(callbacksTableModel) + userdata.callbacksTable.setRowAutoResizes(true); + userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable); + catch + % never mind... + %dispError + end + pause(0.005); + drawnow; + %restoreDbstopError(identifiers); + + % Highlight the selected object (if visible) + flashComponent(nodeHandle,0.2,3); + + elseif (numSelections > 1) % Multiple selections + + % Get the list of all selected nodes + jArray = javaArray('java.lang.Object', numSelections); + toolTipStr = ''; + sameClassFlag = true; + for idx = 1 : numSelections + %jArray(idx) = selectionPaths(idx).getLastPathComponent.getUserObject; + nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata'); + try + if ishghandle(nodedata.obj) + if idx==1 + jArray = nodedata.obj; + else + jArray(idx) = nodedata.obj; + end + else + jArray(idx) = java(nodedata.obj); + end + catch + jArray(idx) = nodedata.obj; + end + toolTipStr = [toolTipStr ' ' class(jArray(idx)) ' ']; %#ok grow + if (idx < numSelections), toolTipStr = [toolTipStr '
    ']; end %#ok grow + try + if (idx > 1) && sameClassFlag && ~isequal(jArray(idx).getClass,jArray(1).getClass) + sameClassFlag = false; + end + catch + if (idx > 1) && sameClassFlag && ~isequal(class(jArray(idx)),class(jArray(1))) + sameClassFlag = false; + end + end + end + toolTipStr = [toolTipStr '']; + + % Update the fully-qualified class name label + if sameClassFlag + classNameStr = class(jArray(1)); + else + classNameStr = 'handle'; + end + if all(ishghandle(jArray)) + if strcmp(classNameStr,'handle') + classNameStr = 'HG handles'; + else + classNameStr = [classNameStr ' (HG handles)']; + end + end + classNameStr = [' ' num2str(numSelections) 'x ' classNameStr]; + userdata.classNameLabel.setText(classNameStr); + userdata.classNameLabel.setToolTipText(toolTipStr); + + % Update the data properties inspector pane + %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround + if isjava(jArray) + jjArray = jArray; + else + jjArray = javaArray('java.lang.Object', numSelections); + for idx = 1 : numSelections + jjArray(idx) = java(jArray(idx)); + end + end + userdata.inspectorPane.getRegistry.setSelected(jjArray, true); + + % Update the callbacks table + try + % Get intersecting callback names & values + stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs'); + [cbData, cbHeaders, cbTableEnabled] = getCbsData(jArray(1), stripStdCbsFlag); %#ok cbHeaders & cbTableEnabled unused + if ~isempty(cbData) + cbNames = cbData(:,1); + for idx = 2 : length(jArray) + [cbData2, cbHeaders2] = getCbsData(jArray(idx), stripStdCbsFlag); %#ok cbHeaders2 unused + if ~isempty(cbData2) + newCbNames = cbData2(:,1); + [cbNames, cbIdx, cb2Idx] = intersect(cbNames,newCbNames); %#ok cb2Idx unused + cbData = cbData(cbIdx,:); + for cbIdx = 1 : length(cbNames) + newIdx = find(strcmp(cbNames{cbIdx},newCbNames)); + if ~isequal(cbData2,cbData) && ~isequal(cbData2{newIdx,2}, cbData{cbIdx,2}) + cbData{cbIdx,2} = ''; + end + end + else + cbData = cbData([],:); %=empty cell array + end + if isempty(cbData) + break; + end + end + end + cbHeaders = {'Callback name','Callback value'}; + try + % Use JideTable if available on this system + list = getTreeData(cbData); %#ok + callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Expand if only one category + if length(callbacksTableModel.getCategories)==1 + callbacksTableModel.expandFirstLevel; + end + catch + callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); + end + set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,jArray,userdata.callbacksTable}); + %set(callbacksTableModel, 'UserData',jArray); + userdata.callbacksTable.setModel(callbacksTableModel) + userdata.callbacksTable.setRowAutoResizes(true); + userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable); + catch + % never mind... + dispError + end + + pause(0.005); + drawnow; + %restoreDbstopError(identifiers); + + % Highlight the selected objects (if visible) + flashComponent(jArray,0.2,3); + end + + % TODO: Auto-highlight selected object (?) + %nodeHandle.requestFocus; + end + catch + dispError + end + end + + %% IFF utility function for annonymous cellfun funcs + function result = iff(test,trueVal,falseVal) %#ok + try + if test + result = trueVal; + else + result = falseVal; + end + catch + result = false; + end + end + + %% Get an HTML representation of the object's properties + function dataFieldsStr = getPropsHtml(nodeHandle, dataFields) + try + % Get a text representation of the fieldnames & values + undefinedStr = ''; + hiddenStr = ''; + dataFieldsStr = ''; % just in case the following croaks... + if isempty(dataFields) + return; + end + dataFieldsStr = evalc('disp(dataFields)'); + if dataFieldsStr(end)==char(10), dataFieldsStr=dataFieldsStr(1:end-1); end + + % Strip out callbacks + dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*Callback(Data)?:[^\n]*$','','lineanchors'); + + % Strip out internal HG2 mirror properties + dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*_I:[^\n]*$','','lineanchors'); + dataFieldsStr = regexprep(dataFieldsStr,'\n\n+','\n'); + + % Sort the fieldnames + %fieldNames = fieldnames(dataFields); + try + [a,b,c,d] = regexp(dataFieldsStr,'(\w*): '); + fieldNames = strrep(d,': ',''); + catch + fieldNames = fieldnames(dataFields); + end + try + [fieldNames, sortedIdx] = sort(fieldNames); + s = strsplit(dataFieldsStr, sprintf('\n'))'; + dataFieldsStr = strjoin(s(sortedIdx), sprintf('\n')); + catch + % never mind... - ignore, leave unsorted + end + + % Convert into a Matlab handle() + %nodeHandle = handle(nodeHandle); + try + % ensure this is a Matlab handle, not a java object + nodeHandle = handle(nodeHandle, 'CallbackProperties'); + catch + try + % HG handles don't allow CallbackProperties... + nodeHandle = handle(nodeHandle); + catch + % Some Matlab class objects simply cannot be converted into a handle() + end + end + + % HTMLize tooltip data + % First, set the fields' font based on its read-write status + for fieldIdx = 1 : length(fieldNames) + thisFieldName = fieldNames{fieldIdx}; + %accessFlags = get(findprop(nodeHandle,thisFieldName),'AccessFlags'); + try + hProp = findprop(nodeHandle,thisFieldName); + accessFlags = get(hProp,'AccessFlags'); + visible = get(hProp,'Visible'); + catch + accessFlags = []; + visible = 'on'; + try if hProp.Hidden, visible='off'; end, catch, end + end + %if isfield(accessFlags,'PublicSet') && strcmp(accessFlags.PublicSet,'on') + if (~isempty(hProp) && isprop(hProp,'SetAccess') && isequal(hProp.SetAccess,'public')) || ... % isequal(...'public') and not strcmpi(...) because might be a cell array of classes + (~isempty(accessFlags) && isfield(accessFlags,'PublicSet') && strcmpi(accessFlags.PublicSet,'on')) + % Bolden read/write fields + thisFieldFormat = ['' thisFieldName ':$2']; + %elseif ~isfield(accessFlags,'PublicSet') + elseif (isempty(hProp) || ~isprop(hProp,'SetAccess')) && ... + (isempty(accessFlags) || ~isfield(accessFlags,'PublicSet')) + % Undefined - probably a Matlab-defined field of com.mathworks.hg.peer.FigureFrameProxy... + thisFieldFormat = ['' thisFieldName ':$2']; + undefinedStr = ', undefined'; + else % PublicSet=='off' + % Gray-out & italicize any read-only fields + thisFieldFormat = ['' thisFieldName ':$2']; + end + if strcmpi(visible,'off') + %thisFieldFormat = ['' thisFieldFormat '']; %#ok + thisFieldFormat = regexprep(thisFieldFormat, {'(.*):(.*)','<.?b>'}, {'$1:$2',''}); %'(.*):(.*)', '$1:$2'); + hiddenStr = ', hidden'; + end + dataFieldsStr = regexprep(dataFieldsStr, ['([\s\n])' thisFieldName ':([^\n]*)'], ['$1' thisFieldFormat]); + end + catch + % never mind... - probably an ambiguous property name + %dispError + end + + % Method 1: simple
    list + %dataFieldsStr = strrep(dataFieldsStr,char(10),' 
      '); + + % Method 2: 2-column + dataFieldsStr = regexprep(dataFieldsStr, '^\s*([^:]+:)([^\n]*)\n^\s*([^:]+:)([^\n]*)$', '', 'lineanchors'); + dataFieldsStr = regexprep(dataFieldsStr, '^[^<]\s*([^:]+:)([^\n]*)$', '', 'lineanchors'); + dataFieldsStr = ['(documented' undefinedStr hiddenStr ' & read-only fields)

      

     $1 $2    $3 $4 
     $1 $2  
    ' dataFieldsStr '
    ']; + end + + %% Update tooltip string with a node's data + function updateNodeTooltip(nodeHandle, uiObject) + try + toolTipStr = class(nodeHandle); + dataFieldsStr = ''; + + % Add HG annotation if relevant + if ishghandle(nodeHandle) + hgStr = ' HG Handle'; + else + hgStr = ''; + end + + % Prevent HG-Java warnings + oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty'); + warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty'); + warning('off','MATLAB:hg:Root'); + + % Note: don't bulk-get because (1) not all properties are returned & (2) some properties cause a Java exception + % Note2: the classhandle approach does not enable access to user-defined schema.props + ch = classhandle(handle(nodeHandle)); + dataFields = []; + [sortedNames, sortedIdx] = sort(get(ch.Properties,'Name')); + for idx = 1 : length(sortedIdx) + sp = ch.Properties(sortedIdx(idx)); + % TODO: some fields (see EOL comment below) generate a Java Exception from: com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run + if strcmp(sp.AccessFlags.PublicGet,'on') % && ~any(strcmp(sp.Name,{'FixedColors','ListboxTop','Extent'})) + try + dataFields.(sp.Name) = get(nodeHandle, sp.Name); + catch + dataFields.(sp.Name) = 'Error!'; + end + else + dataFields.(sp.Name) = '(no public getter method)'; + end + end + dataFieldsStr = getPropsHtml(nodeHandle, dataFields); + catch + % Probably a non-HG java object + try + % Note: the bulk-get approach enables access to user-defined schema-props, but not to some original classhandle Properties... + try + oldWarn3 = warning('off','MATLAB:structOnObject'); + dataFields = struct(nodeHandle); + warning(oldWarn3); + catch + dataFields = get(nodeHandle); + end + dataFieldsStr = getPropsHtml(nodeHandle, dataFields); + catch + % Probably a missing property getter implementation + try + % Inform the user - bail out on error + err = lasterror; %#ok + dataFieldsStr = ['

    ' strrep(err.message, char(10), '
    ')]; + catch + % forget it... + end + end + end + + % Restore warnings + try warning(oldWarn); catch, end + + % Set the object tooltip + if ~isempty(dataFieldsStr) + toolTipStr = [' ' char(toolTipStr) '' hgStr ': ' dataFieldsStr '']; + end + uiObject.setToolTipText(toolTipStr); + end + + %% Expand tree node + function nodeExpanded(src, evd, tree) %#ok + % tree = handle(src); + % evdsrc = evd.getSource; + evdnode = evd.getCurrentNode; + + if ~tree.isLoaded(evdnode) + + % Get the list of children TreeNodes + childnodes = getChildrenNodes(tree, evdnode); + + % Add the HG sub-tree (unless already included in the first tree) + childHandle = getappdata(evdnode.handle,'childHandle'); %=evdnode.getUserObject + if evdnode.isRoot && ~isempty(hg_handles) && ~isequal(hg_handles(1).java, childHandle) + childnodes = [childnodes, getChildrenNodes(tree, evdnode, true)]; + end + + % If we have a single child handle, wrap it within a javaArray for tree.add() to "swallow" + if (length(childnodes) == 1) + chnodes = childnodes; + childnodes = javaArray('com.mathworks.hg.peer.UITreeNode', 1); + childnodes(1) = java(chnodes); + end + + % Add child nodes to the current node + tree.add(evdnode, childnodes); + tree.setLoaded(evdnode, true); + end + end + + %% Get an icon image no larger than 16x16 pixels + function iconImage = setIconSize(iconImage) + try + iconWidth = iconImage.getWidth; + iconHeight = iconImage.getHeight; + if iconWidth > 16 + newHeight = fix(iconHeight * 16 / iconWidth); + iconImage = iconImage.getScaledInstance(16,newHeight,iconImage.SCALE_SMOOTH); + elseif iconHeight > 16 + newWidth = fix(iconWidth * 16 / iconHeight); + iconImage = iconImage.getScaledInstance(newWidth,16,iconImage.SCALE_SMOOTH); + end + catch + % never mind... - return original icon + end + end % setIconSize + + %% Get list of children nodes + function nodes = getChildrenNodes(tree, parentNode, isRootHGNode) + try + iconpath = [matlabroot, '/toolbox/matlab/icons/']; + nodes = handle([]); + try + userdata = get(tree,'userdata'); + catch + userdata = getappdata(handle(tree),'userdata'); + end + hdls = userdata.handles; + nodedata = get(parentNode,'userdata'); + if nargin < 3 + %isJavaNode = ~ishghandle(parentNode.getUserObject); + isJavaNode = ~ishghandle(nodedata.obj); + isRootHGNode = false; + else + isJavaNode = ~isRootHGNode; + end + + % Search for this parent node in the list of all nodes + parents = userdata.parents; + nodeIdx = nodedata.idx; + + if isJavaNode && isempty(nodeIdx) % Failback, in case userdata doesn't work for some reason... + for hIdx = 1 : length(hdls) + %if isequal(handle(parentNode.getUserObject), hdls(hIdx)) + if isequal(handle(nodedata.obj), hdls(hIdx)) + nodeIdx = hIdx; + break; + end + end + end + if ~isJavaNode + if isRootHGNode % =root HG node + thisChildHandle = userdata.hg_handles(1); + childName = getNodeName(thisChildHandle); + hasGrandChildren = any(parents==1); + icon = []; + if hasGrandChildren && length(hg_handles)>1 + childName = childName.concat(' - HG root container'); + icon = [iconpath 'figureicon.gif']; + end + try + nodes = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren); + catch % old matlab version don't have the 'v0' option + try + nodes = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren); + catch + % probably an invalid handle - ignore... + end + end + + % Add the handler to the node's internal data + % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes + % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata + %nodes.setUserObject(thisChildHandle); + setappdata(nodes,'childHandle',thisChildHandle); + nodedata.idx = 1; + nodedata.obj = thisChildHandle; + set(nodes,'userdata',nodedata); + return; + else % non-root HG node + parents = userdata.hg_parents; + hdls = userdata.hg_handles; + end % if isRootHGNode + end % if ~isJavaNode + + % If this node was found, get the list of its children + if ~isempty(nodeIdx) + %childIdx = setdiff(find(parents==nodeIdx),nodeIdx); + childIdx = find(parents==nodeIdx); + childIdx(childIdx==nodeIdx) = []; % faster... + numChildren = length(childIdx); + for cIdx = 1 : numChildren + thisChildIdx = childIdx(cIdx); + try thisChildHandle = hdls(thisChildIdx); catch, continue, end + childName = getNodeName(thisChildHandle); + try + visible = thisChildHandle.Visible; + if visible + try visible = thisChildHandle.Width > 0; catch, end %#ok + end + if ~visible + childName = ['' char(childName) '']; %#ok grow + end + catch + % never mind... + end + hasGrandChildren = any(parents==thisChildIdx); + try + isaLabel = isa(thisChildHandle.java,'javax.swing.JLabel'); + catch + isaLabel = 0; + end + if hasGrandChildren && ~any(strcmp(class(thisChildHandle),{'axes'})) + icon = [iconpath 'foldericon.gif']; + elseif isaLabel + icon = [iconpath 'tool_text.gif']; + else + icon = []; + end + try + nodes(cIdx) = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren); + catch % old matlab version don't have the 'v0' option + try + nodes(cIdx) = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren); + catch + % probably an invalid handle - ignore... + end + end + + % Use existing object icon, if available + try + setTreeNodeIcon(nodes(cIdx),thisChildHandle); + catch + % probably an invalid handle - ignore... + end + + % Pre-select the node based upon the user's FINDJOBJ filters + try + if isJavaNode && ~userdata.userSelected && any(userdata.initialIdx == thisChildIdx) + pause(0.0002); % as short as possible... + drawnow; + if isempty(tree.getSelectedNodes) + tree.setSelectedNode(nodes(cIdx)); + else + newSelectedNodes = [tree.getSelectedNodes, nodes(cIdx).java]; + tree.setSelectedNodes(newSelectedNodes); + end + end + catch + % never mind... + end + + % Add the handler to the node's internal data + % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes + % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata + % Note3: the following will error if invalid handle - ignore + try + if isJavaNode + thisChildHandle = thisChildHandle.java; + end + %nodes(cIdx).setUserObject(thisChildHandle); + setappdata(nodes(cIdx),'childHandle',thisChildHandle); + nodedata.idx = thisChildIdx; + nodedata.obj = thisChildHandle; + set(nodes(cIdx),'userdata',nodedata); + catch + % never mind (probably an invalid handle) - leave unchanged (like a leaf) + end + end + end + catch + % Never mind - leave unchanged (like a leaf) + %error('YMA:findjobj:UnknownNodeType', 'Error expanding component tree node'); + dispError + end + end + + %% Get a node's name + function [nodeName, nodeTitle] = getNodeName(hndl,charsLimit) + try + % Initialize (just in case one of the succeding lines croaks) + nodeName = ''; + nodeTitle = ''; + if ~ismethod(hndl,'getClass') + try + nodeName = class(hndl); + catch + nodeName = hndl.type; % last-ditch try... + end + else + nodeName = hndl.getClass.getSimpleName; + end + + % Strip away the package name, leaving only the regular classname + if ~isempty(nodeName) && ischar(nodeName) + nodeName = java.lang.String(nodeName); + nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1); + end + if (nodeName.length == 0) + % fix case of anonymous internal classes, that do not have SimpleNames + try + nodeName = hndl.getClass.getName; + nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1); + catch + % never mind - leave unchanged... + end + end + + % Get any unique identifying string (if available in one of several fields) + labelsToCheck = {'label','title','text','string','displayname','toolTipText','TooltipString','actionCommand','name','Tag','style'}; %,'UIClassID'}; + nodeTitle = ''; + strField = ''; %#ok - used for debugging + while ((~isa(nodeTitle,'java.lang.String') && ~ischar(nodeTitle)) || isempty(nodeTitle)) && ~isempty(labelsToCheck) + try + nodeTitle = get(hndl,labelsToCheck{1}); + strField = labelsToCheck{1}; %#ok - used for debugging + catch + % never mind - probably missing prop, so skip to next one + end + labelsToCheck(1) = []; + end + if length(nodeTitle) ~= numel(nodeTitle) + % Multi-line - convert to a long single line + nodeTitle = nodeTitle'; + nodeTitle = nodeTitle(:)'; + end + if isempty(char(nodeTitle)) + % No title - check whether this is an HG label whose text is gettable + try + location = hndl.getLocationOnScreen; + pos = [location.getX, location.getY, hndl.getWidth, hndl.getHeight]; + %dist = sum((labelPositions-repmat(pos,size(labelPositions,1),[1,1,1,1])).^2, 2); + dist = sum((labelPositions-repmat(pos,[size(labelPositions,1),1])).^2, 2); + [minVal,minIdx] = min(dist); + % Allow max distance of 8 = 2^2+2^2 (i.e. X&Y off by up to 2 pixels, W&H exact) + if minVal <= 8 % 8=2^2+2^2 + nodeTitle = get(hg_labels(minIdx),'string'); + % Preserve the label handles & position for the tooltip & context-menu + %hg_labels(minIdx) = []; + %labelPositions(minIdx,:) = []; + end + catch + % never mind... + end + end + if nargin<2, charsLimit = 25; end + extraStr = regexprep(nodeTitle,{sprintf('(.{%d,%d}).*',charsLimit,min(charsLimit,length(nodeTitle)-1)),' +'},{'$1...',' '},'once'); + if ~isempty(extraStr) + if ischar(extraStr) + nodeName = nodeName.concat(' (''').concat(extraStr).concat(''')'); + else + nodeName = nodeName.concat(' (').concat(num2str(extraStr)).concat(')'); + end + %nodeName = nodeName.concat(strField); + end + catch + % Never mind - use whatever we have so far + %dispError + end + end + + %% Strip standard Swing callbacks from a list of events + function evNames = stripStdCbs(evNames) + try + stdEvents = {'AncestorAdded', 'AncestorMoved', 'AncestorRemoved', 'AncestorResized', ... + 'ComponentAdded', 'ComponentRemoved', 'ComponentHidden', ... + 'ComponentMoved', 'ComponentResized', 'ComponentShown', ... + 'FocusGained', 'FocusLost', 'HierarchyChanged', ... + 'KeyPressed', 'KeyReleased', 'KeyTyped', ... + 'MouseClicked', 'MouseDragged', 'MouseEntered', 'MouseExited', ... + 'MouseMoved', 'MousePressed', 'MouseReleased', 'MouseWheelMoved', ... + 'PropertyChange', 'VetoableChange', ... + 'CaretPositionChanged', 'InputMethodTextChanged', ... + 'ButtonDown', 'Create', 'Delete'}; + stdEvents = [stdEvents, strcat(stdEvents,'Callback'), strcat(stdEvents,'Fcn')]; + evNames = setdiff(evNames,stdEvents)'; + catch + % Never mind... + dispError + end + end + + %% Callback function for checkbox + function cbHideStdCbs_Callback(src, evd, callbacksTable, varargin) %#ok + try + % Store the current checkbox value for later use + if nargin < 3 + try + callbacksTable = get(src,'userdata'); + catch + callbacksTable = getappdata(src,'userdata'); + end + end + if evd.getSource.isSelected + setappdata(callbacksTable,'hideStdCbs',1); + else + setappdata(callbacksTable,'hideStdCbs',[]); + end + + % Rescan the current node + try + userdata = get(callbacksTable,'userdata'); + catch + userdata = getappdata(callbacksTable,'userdata'); + end + nodepath = userdata.jTree.getSelectionModel.getSelectionPath; + try + ed.getCurrentNode = nodepath.getLastPathComponent; + nodeSelected(handle(userdata.jTreePeer),ed,[]); + catch + % ignore - probably no node selected + end + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btWebsite_Callback(src, evd, varargin) %#ok + try + web('http://UndocumentedMatlab.com','-browser'); + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btRefresh_Callback(src, evd, varargin) %#ok + try + % Set cursor shape to hourglass until we're done + hTreeFig = varargin{2}; + set(hTreeFig,'Pointer','watch'); + drawnow; + object = varargin{1}; + + % Re-invoke this utility to re-scan the container for all children + findjobj(object); + catch + % Never mind... + end + + % Restore default cursor shape + set(hTreeFig,'Pointer','arrow'); + end + + %% Callback function for button + function btExport_Callback(src, evd, varargin) %#ok + try + % Get the list of all selected nodes + if length(varargin) > 1 + jTree = varargin{1}; + numSelections = jTree.getSelectionCount; + selectionPaths = jTree.getSelectionPaths; + hdls = handle([]); + for idx = 1 : numSelections + %hdls(idx) = handle(selectionPaths(idx).getLastPathComponent.getUserObject); + nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata'); + try + hdls(idx) = handle(nodedata.obj,'CallbackProperties'); + catch + if idx==1 % probably due to HG2: can't convert object to handle([]) + hdls = nodedata.obj; + else + hdls(idx) = nodedata.obj; + end + end + end + + % Assign the handles in the base workspace & inform user + assignin('base','findjobj_hdls',hdls); + classNameLabel = varargin{2}; + msg = ['Exported ' char(classNameLabel.getText.trim) ' to base workspace variable findjobj_hdls']; + else + % Right-click (context-menu) callback + data = varargin{1}; + obj = data{1}; + varName = data{2}; + if isempty(varName) + varName = inputdlg('Enter workspace variable name','FindJObj'); + if isempty(varName), return; end % bail out on + varName = varName{1}; + if isempty(varName) || ~ischar(varName), return; end % bail out on empty/null + varName = genvarname(varName); + end + assignin('base',varName,handle(obj,'CallbackProperties')); + msg = ['Exported object to base workspace variable ' varName]; + end + msgbox(msg,'FindJObj','help'); + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btFocus_Callback(src, evd, varargin) %#ok + try + % Request focus for the specified object + object = getTopSelectedObject(varargin{:}); + object.requestFocus; + catch + try + object = object.java.getPeer.requestFocus; + object.requestFocus; + catch + % Never mind... + %dispError + end + end + end + + %% Callback function for button + function btInspect_Callback(src, evd, varargin) %#ok + try + % Inspect the specified object + if length(varargin) == 1 + object = varargin{1}; + else + object = getTopSelectedObject(varargin{:}); + end + if isempty(which('uiinspect')) + + % If the user has not indicated NOT to be informed about UIInspect + if ~ispref('FindJObj','dontCheckUIInspect') + + % Ask the user whether to download UIINSPECT (YES, no, no & don't ask again) + answer = questdlg({'The object inspector requires UIINSPECT from the MathWorks File Exchange. UIINSPECT was created by Yair Altman, like this FindJObj utility.','','Download & install UIINSPECT?'},'UIInspect','Yes','No','No & never ask again','Yes'); + switch answer + case 'Yes' % => Yes: download & install + try + % Download UIINSPECT + baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/17935'; + fileUrl = [baseUrl '?controller=file_infos&download=true']; + %file = urlread(fileUrl); + %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL + + % Install... + %newPath = fullfile(fileparts(which(mfilename)),'uiinspect.m'); + %fid = fopen(newPath,'wt'); + %fprintf(fid,'%s',file); + %fclose(fid); + [fpath,fname,fext] = fileparts(which(mfilename)); + zipFileName = fullfile(fpath,'uiinspect.zip'); + urlwrite(fileUrl,zipFileName); + unzip(zipFileName,fpath); + rehash; + catch + % Error downloading: inform the user + msgbox(['Error in downloading: ' lasterr], 'UIInspect', 'warn'); %#ok + web(baseUrl); + end + + % ...and now run it... + %pause(0.1); + drawnow; + dummy = which('uiinspect'); %#ok used only to load into memory + uiinspect(object); + return; + + case 'No & never ask again' % => No & don't ask again + setpref('FindJObj','dontCheckUIInspect',1); + + otherwise + % forget it... + end + end + drawnow; + + % No UIINSPECT available - run the good-ol' METHODSVIEW()... + methodsview(object); + else + uiinspect(object); + end + catch + try + if isjava(object) + methodsview(object) + else + methodsview(object.java); + end + catch + % Never mind... + dispError + end + end + end + + %% Callback function for button + function btCheckFex_Callback(src, evd, varargin) %#ok + try + % Check the FileExchange for the latest version + web('http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317'); + catch + % Never mind... + dispError + end + end + + %% Check for existence of a newer version + function checkVersion() + try + % If the user has not indicated NOT to be informed + if ~ispref('FindJObj','dontCheckNewerVersion') + + % Get the latest version date from the File Exchange webpage + baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/'; + webUrl = [baseUrl '14317']; % 'loadFile.do?objectId=14317']; + webPage = urlread(webUrl); + modIdx = strfind(webPage,'>Updates<'); + if ~isempty(modIdx) + webPage = webPage(modIdx:end); + % Note: regexp hangs if substr not found, so use strfind instead... + %latestWebVersion = regexprep(webPage,'.*?>(20[\d-]+).*','$1'); + dateIdx = strfind(webPage,'class="date">'); + if ~isempty(dateIdx) + latestDate = webPage(dateIdx(end)+13 : dateIdx(end)+23); + try + startIdx = dateIdx(end)+27; + descStartIdx = startIdx + strfind(webPage(startIdx:startIdx+999),''); + descEndIdx = startIdx + strfind(webPage(startIdx:startIdx+999),''); + descStr = webPage(descStartIdx(1)+3 : descEndIdx(1)-2); + descStr = regexprep(descStr,'',''); + catch + descStr = ''; + end + + % Get this file's latest date + thisFileName = which(mfilename); %#ok + try + thisFileData = dir(thisFileName); + try + thisFileDatenum = thisFileData.datenum; + catch % old ML versions... + thisFileDatenum = datenum(thisFileData.date); + end + catch + thisFileText = evalc('type(thisFileName)'); + thisFileLatestDate = regexprep(thisFileText,'.*Change log:[\s%]+([\d-]+).*','$1'); + thisFileDatenum = datenum(thisFileLatestDate,'yyyy-mm-dd'); + end + + % If there's a newer version on the File Exchange webpage (allow 2 days grace period) + if (thisFileDatenum < datenum(latestDate,'dd mmm yyyy')-2) + + % Ask the user whether to download the newer version (YES, no, no & don't ask again) + msg = {['A newer version (' latestDate ') of FindJObj is available on the MathWorks File Exchange:'], '', ... + ['\color{blue}' descStr '\color{black}'], '', ... + 'Download & install the new version?'}; + createStruct.Interpreter = 'tex'; + createStruct.Default = 'Yes'; + answer = questdlg(msg,'FindJObj','Yes','No','No & never ask again',createStruct); + switch answer + case 'Yes' % => Yes: download & install newer file + try + %fileUrl = [baseUrl '/download.do?objectId=14317&fn=findjobj&fe=.m']; + fileUrl = [baseUrl '/14317?controller=file_infos&download=true']; + %file = urlread(fileUrl); + %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL + %fid = fopen(thisFileName,'wt'); + %fprintf(fid,'%s',file); + %fclose(fid); + [fpath,fname,fext] = fileparts(thisFileName); + zipFileName = fullfile(fpath,[fname '.zip']); + urlwrite(fileUrl,zipFileName); + unzip(zipFileName,fpath); + rehash; + catch + % Error downloading: inform the user + msgbox(['Error in downloading: ' lasterr], 'FindJObj', 'warn'); %#ok + web(webUrl); + end + case 'No & never ask again' % => No & don't ask again + setpref('FindJObj','dontCheckNewerVersion',1); + otherwise + % forget it... + end + end + end + else + % Maybe webpage not fully loaded or changed format - bail out... + end + end + catch + % Never mind... + end + end + + %% Get the first selected object (might not be the top one - depends on selection order) + function object = getTopSelectedObject(jTree, root) + try + object = []; + numSelections = jTree.getSelectionCount; + if numSelections > 0 + % Get the first object specified + %object = jTree.getSelectionPath.getLastPathComponent.getUserObject; + nodedata = get(jTree.getSelectionPath.getLastPathComponent,'userdata'); + else + % Get the root object (container) + %object = root.getUserObject; + nodedata = get(root,'userdata'); + end + object = nodedata.obj; + catch + % Never mind... + dispError + end + end + + %% Update component callback upon callbacksTable data change + function tbCallbacksChanged(src, evd, object, table) + persistent hash + try + % exit if invalid handle or already in Callback + %if ~ishandle(src) || ~isempty(getappdata(src,'inCallback')) % || length(dbstack)>1 %exit also if not called from user action + if isempty(hash), hash = java.util.Hashtable; end + if ~ishandle(src) || ~isempty(hash.get(src)) % || length(dbstack)>1 %exit also if not called from user action + return; + end + %setappdata(src,'inCallback',1); % used to prevent endless recursion % can't use getappdata(src,...) because it fails on R2010b!!! + hash.put(src,1); + + % Update the object's callback with the modified value + modifiedColIdx = evd.getColumn; + modifiedRowIdx = evd.getFirstRow; + if modifiedRowIdx>=0 %&& modifiedColIdx==1 %sanity check - should always be true + %table = evd.getSource; + %object = get(src,'userdata'); + modifiedRowIdx = table.getSelectedRow; % overcome issues with hierarchical table + cbName = strtrim(table.getValueAt(modifiedRowIdx,0)); + try + cbValue = strtrim(char(table.getValueAt(modifiedRowIdx,1))); + if ~isempty(cbValue) && ismember(cbValue(1),'{[@''') + cbValue = eval(cbValue); + end + if (~ischar(cbValue) && ~isa(cbValue, 'function_handle') && (~iscell(cbValue) || iscom(object(1)))) + revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, ''); + else + for objIdx = 1 : length(object) + obj = object(objIdx); + if ~iscom(obj) + try + try + if isjava(obj) + obj = handle(obj,'CallbackProperties'); + end + catch + % never mind... + end + set(obj, cbName, cbValue); + catch + try + set(handle(obj,'CallbackProperties'), cbName, cbValue); + catch + % never mind - probably a callback-group header + end + end + else + cbs = obj.eventlisteners; + if ~isempty(cbs) + cbs = cbs(strcmpi(cbs(:,1),cbName),:); + obj.unregisterevent(cbs); + end + if ~isempty(cbValue) && ~strcmp(cbName,'-') + obj.registerevent({cbName, cbValue}); + end + end + end + end + catch + revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, lasterr) %#ok + end + end + catch + % never mind... + end + %setappdata(src,'inCallback',[]); % used to prevent endless recursion % can't use setappdata(src,...) because it fails on R2010b!!! + hash.remove(src); + end + + %% Revert Callback table modification + function revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, errMsg) %#ok + try + % Display a notification MsgBox + msg = 'Callbacks must be a ''string'', or a @function handle'; + if ~iscom(object(1)), msg = [msg ' or a {@func,args...} construct']; end + if ~isempty(errMsg), msg = {errMsg, '', msg}; end + msgbox(msg, ['Error setting ' cbName ' value'], 'warn'); + + % Revert to the current value + curValue = ''; + try + if ~iscom(object(1)) + curValue = charizeData(get(object(1),cbName)); + else + cbs = object(1).eventlisteners; + if ~isempty(cbs) + cbs = cbs(strcmpi(cbs(:,1),cbName),:); + curValue = charizeData(cbs(1,2)); + end + end + catch + % never mind... - clear the current value + end + table.setValueAt(curValue, modifiedRowIdx, modifiedColIdx); + catch + % never mind... + end + end % revertCbTableModification + + %% Get the Java positions of all HG text labels + function labelPositions = getLabelsJavaPos(container) + try + labelPositions = []; + + % Ensure we have a figure handle + try + h = hFig; %#ok unused + catch + hFig = getCurrentFigure; + end + + % Get the figure's margins from the Matlab properties + hg_labels = findall(hFig, 'Style','text'); + units = get(hFig,'units'); + set(hFig,'units','pixels'); + outerPos = get(hFig,'OuterPosition'); + innerPos = get(hFig,'Position'); + set(hFig,'units',units); + margins = abs(innerPos-outerPos); + + figX = container.getX; % =outerPos(1) + figY = container.getY; % =outerPos(2) + %figW = container.getWidth; % =outerPos(3) + figH = container.getHeight; % =outerPos(4) + + % Get the relevant screen pixel size + %monitorPositions = get(0,'MonitorPositions'); + %for monitorIdx = size(monitorPositions,1) : -1 : 1 + % screenSize = monitorPositions(monitorIdx,:); + % if (outerPos(1) >= screenSize(1)) % && (outerPos(1)+outerPos(3) <= screenSize(3)) + % break; + % end + %end + %monitorBaseY = screenSize(4) - monitorPositions(1,4); + + % Compute the labels' screen pixel position in Java units ([0,0] = top left) + for idx = 1 : length(hg_labels) + matlabPos = getpixelposition(hg_labels(idx),1); + javaX = figX + matlabPos(1) + margins(1); + javaY = figY + figH - matlabPos(2) - matlabPos(4) - margins(2); + labelPositions(idx,:) = [javaX, javaY, matlabPos(3:4)]; %#ok grow + end + catch + % never mind... + err = lasterror; %#ok debug point + end + end + + %% Traverse an HG container hierarchy and extract the HG elements within + function traverseHGContainer(hcontainer,level,parent) + try + % Record the data for this node + thisIdx = length(hg_levels) + 1; + hg_levels(thisIdx) = level; + hg_parentIdx(thisIdx) = parent; + try + hg_handles(thisIdx) = handle(hcontainer); + catch + hg_handles = handle(hcontainer); + end + parentId = length(hg_parentIdx); + + % Now recursively process all this node's children (if any) + %if ishghandle(hcontainer) + try % try-catch is faster than checking ishghandle(hcontainer)... + allChildren = allchild(handle(hcontainer)); + for childIdx = 1 : length(allChildren) + traverseHGContainer(allChildren(childIdx),level+1,parentId); + end + catch + % do nothing - probably not a container + %dispError + end + + % TODO: Add axis (plot) component handles + catch + % forget it... + end + end + + %% Debuggable "quiet" error-handling + function dispError + err = lasterror; %#ok + msg = err.message; + for idx = 1 : length(err.stack) + filename = err.stack(idx).file; + if ~isempty(regexpi(filename,mfilename)) + funcname = err.stack(idx).name; + line = num2str(err.stack(idx).line); + msg = [msg ' at ' funcname ' line #' line '']; %#ok grow + break; + end + end + disp(msg); + return; % debug point + end + + %% ML 7.0 - compatible ischar() function + function flag = ischar(data) + try + flag = builtin('ischar',data); + catch + flag = isa(data,'char'); + end + end + + %% Set up the uitree context (right-click) menu + function jmenu = setTreeContextMenu(obj,node,tree_h) + % Prepare the context menu (note the use of HTML labels) + import javax.swing.* + titleStr = getNodeTitleStr(obj,node); + titleStr = regexprep(titleStr,'


    .*',''); + menuItem0 = JMenuItem(titleStr); + menuItem0.setEnabled(false); + menuItem0.setArmed(false); + %menuItem1 = JMenuItem('Export handle to findjobj_hdls'); + if isjava(obj), prefix = 'j'; else, prefix = 'h'; end %#ok + varname = strrep([prefix strtok(char(node.getName))], '$','_'); + varname = genvarname(varname); + varname(2) = upper(varname(2)); % ensure lowerCamelCase + menuItem1 = JMenuItem(['Export handle to ' varname]); + menuItem2 = JMenuItem('Export handle to...'); + menuItem3 = JMenuItem('Request focus (bring to front)'); + menuItem4 = JMenuItem('Flash component borders'); + menuItem5 = JMenuItem('Display properties & callbacks'); + menuItem6 = JMenuItem('Inspect object'); + + % Set the menu items' callbacks + set(handle(menuItem1,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,varname}}); + set(handle(menuItem2,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,[]}}); + set(handle(menuItem3,'CallbackProperties'), 'ActionPerformedCallback', {@requestFocus,obj}); + set(handle(menuItem4,'CallbackProperties'), 'ActionPerformedCallback', {@flashComponent,{obj,0.2,3}}); + set(handle(menuItem5,'CallbackProperties'), 'ActionPerformedCallback', {@nodeSelected,{tree_h,node}}); + set(handle(menuItem6,'CallbackProperties'), 'ActionPerformedCallback', {@btInspect_Callback,obj}); + + % Add all menu items to the context menu (with internal separator) + jmenu = JPopupMenu; + jmenu.add(menuItem0); + jmenu.addSeparator; + handleValue=[]; try handleValue = double(obj); catch, end; %#ok + if ~isempty(handleValue) + % For valid HG handles only + menuItem0a = JMenuItem('Copy handle value to clipboard'); + set(handle(menuItem0a,'CallbackProperties'), 'ActionPerformedCallback', sprintf('clipboard(''copy'',%.99g)',handleValue)); + jmenu.add(menuItem0a); + end + jmenu.add(menuItem1); + jmenu.add(menuItem2); + jmenu.addSeparator; + jmenu.add(menuItem3); + jmenu.add(menuItem4); + jmenu.add(menuItem5); + jmenu.add(menuItem6); + end % setTreeContextMenu + + %% Set the mouse-press callback + function treeMousePressedCallback(hTree, eventData, tree_h) %#ok hTree is unused + if eventData.isMetaDown % right-click is like a Meta-button + % Get the clicked node + clickX = eventData.getX; + clickY = eventData.getY; + jtree = eventData.getSource; + treePath = jtree.getPathForLocation(clickX, clickY); + try + % Modify the context menu based on the clicked node + node = treePath.getLastPathComponent; + userdata = get(node,'userdata'); + obj = userdata.obj; + jmenu = setTreeContextMenu(obj,node,tree_h); + + % TODO: remember to call jmenu.remove(item) in item callback + % or use the timer hack shown here to remove the item: + % timerFcn = {@menuRemoveItem,jmenu,item}; + % start(timer('TimerFcn',timerFcn,'StartDelay',0.2)); + + % Display the (possibly-modified) context menu + jmenu.show(jtree, clickX, clickY); + jmenu.repaint; + + % This is for debugging: + userdata.tree = jtree; + setappdata(gcf,'findjobj_hgtree',userdata) + catch + % clicked location is NOT on top of any node + % Note: can also be tested by isempty(treePath) + end + end + end % treeMousePressedCallback + + %% Remove the extra context menu item after display + function menuRemoveItem(hObj,eventData,jmenu,item) %#ok unused + jmenu.remove(item); + end % menuRemoveItem + + %% Get the title for the tooltip and context (right-click) menu + function nodeTitleStr = getNodeTitleStr(obj,node) + try + % Display the full classname and object name in the tooltip + %nodeName = char(node.getName); + %nodeName = strrep(nodeName, '',''); + %nodeName = strrep(nodeName, '',''); + nodeName = char(getNodeName(obj,99)); + [objClass,objName] = strtok(nodeName); + objName = objName(3:end-1); % strip leading ( and trailing ) + if isempty(objName), objName = '(none found)'; end + nodeName = char(node.getName); + objClass = char(obj.getClass.getName); + nodeTitleStr = sprintf('Class name: %s
    Text/title: %s',objClass,objName); + + % If the component is invisible, state this in the tooltip + if ~isempty(strfind(nodeName,'color="gray"')) + nodeTitleStr = [nodeTitleStr '
    *** Invisible ***']; + end + nodeTitleStr = [nodeTitleStr '
    Right-click for context-menu']; + catch + % Possible not a Java object - try treating as an HG handle + try + handleValueStr = sprintf('#: %.99g',double(obj)); + try + type = ''; + type = get(obj,'type'); + type(1) = upper(type(1)); + catch + if ~ishandle(obj) + type = ['Invalid ' char(node.getName) '']; + handleValueStr = '!!!
    Perhaps this handle was deleted after this UIInspect tree was
    already drawn. Try to refresh by selecting any valid node handle'; + end + end + nodeTitleStr = sprintf('%s handle %s',type,handleValueStr); + try + % If the component is invisible, state this in the tooltip + if strcmp(get(obj,'Visible'),'off') + nodeTitleStr = [nodeTitleStr '
    Invisible']; + end + catch + % never mind... + end + catch + % never mind... - ignore + end + end + end % getNodeTitleStr + + %% Handle tree mouse movement callback - used to set the tooltip & context-menu + function treeMouseMovedCallback(hTree, eventData) + try + x = eventData.getX; + y = eventData.getY; + jtree = eventData.getSource; + treePath = jtree.getPathForLocation(x, y); + try + % Set the tooltip string based on the hovered node + node = treePath.getLastPathComponent; + userdata = get(node,'userdata'); + obj = userdata.obj; + tooltipStr = getNodeTitleStr(obj,node); + set(hTree,'ToolTipText',tooltipStr) + catch + % clicked location is NOT on top of any node + % Note: can also be tested by isempty(treePath) + end + catch + dispError; + end + return; % denug breakpoint + end % treeMouseMovedCallback + + %% Request focus for a specific object handle + function requestFocus(hTree, eventData, obj) %#ok hTree & eventData are unused + % Ensure the object handle is valid + if isjava(obj) + obj.requestFocus; + return; + elseif ~ishandle(obj) + msgbox('The selected object does not appear to be a valid handle as defined by the ishandle() function. Perhaps this object was deleted after this hierarchy tree was already drawn. Refresh this tree by selecting a valid node handle and then retry.','FindJObj','warn'); + beep; + return; + end + + try + foundFlag = 0; + while ~foundFlag + if isempty(obj), return; end % sanity check + type = get(obj,'type'); + obj = double(obj); + foundFlag = any(strcmp(type,{'figure','axes','uicontrol'})); + if ~foundFlag + obj = get(obj,'Parent'); + end + end + feval(type,obj); + catch + % never mind... + dispError; + end + end % requestFocus + +end % FINDJOBJ + +% Fast implementation +function jControl = findjobj_fast(hControl, jContainer) + try jControl = hControl.getTable; return, catch, end % fast bail-out for old uitables + try jControl = hControl.JavaFrame.getGUIDEView; return, catch, end % bail-out for HG2 matlab.ui.container.Panel + oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); + if nargin < 2 || isempty(jContainer) + % Use a HG2 matlab.ui.container.Panel jContainer if the control's parent is a uipanel + try + hParent = get(hControl,'Parent'); + catch + % Probably indicates an invalid/deleted/empty handle + jControl = []; + return + end + try jContainer = hParent.JavaFrame.getGUIDEView; catch, jContainer = []; end + end + if isempty(jContainer) + hFig = ancestor(hControl,'figure'); + jf = get(hFig, 'JavaFrame'); + jContainer = jf.getFigurePanelContainer.getComponent(0); + end + warning(oldWarn); + jControl = []; + counter = 20; % 2018-09-21 speedup (100 x 0.001 => 20 x 0.005) - Martin Lehmann suggestion on FEX 2016-06-07 + specialTooltipStr = '!@#$%^&*'; + try % Fix for R2018b suggested by Eddie (FEX comment 2018-09-19) + tooltipPropName = 'TooltipString'; + oldTooltip = get(hControl,tooltipPropName); + set(hControl,tooltipPropName,specialTooltipStr); + catch + tooltipPropName = 'Tooltip'; + oldTooltip = get(hControl,tooltipPropName); + set(hControl,tooltipPropName,specialTooltipStr); + end + while isempty(jControl) && counter>0 + counter = counter - 1; + pause(0.005); + jControl = findTooltipIn(jContainer, specialTooltipStr); + end + set(hControl,tooltipPropName,oldTooltip); + try jControl.setToolTipText(oldTooltip); catch, end + try jControl = jControl.getParent.getView.getParent.getParent; catch, end % return JScrollPane if exists +end +function jControl = findTooltipIn(jContainer, specialTooltipStr) + try + jControl = []; % Fix suggested by H. Koch 11/4/2017 + tooltipStr = jContainer.getToolTipText; + %if strcmp(char(tooltipStr),specialTooltipStr) + if ~isempty(tooltipStr) && tooltipStr.startsWith(specialTooltipStr) % a bit faster + jControl = jContainer; + else + for idx = 1 : jContainer.getComponentCount + jControl = findTooltipIn(jContainer.getComponent(idx-1), specialTooltipStr); + if ~isempty(jControl), return; end + end + end + catch + % ignore + end +end + +%% TODO TODO TODO +%{ +- Enh: Improve interactive-GUI performance - esp. expandNode() +- Enh: Add property listeners - same problem in MathWork's inspect.m +- Enh: Display additional properties - same problem in MathWork's inspect.m +- Enh: Add axis (plot, Graphics) component handles +- Enh: Add figure thumbnail image below the java tree (& indicate corresponding jObject when selected) +- Enh: scroll initially-selected node into view (problem because treenode has no pixel location) +- Fix: java exceptions when getting some fields (com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run) +- Fix: use EDT if available (especially in flashComponent) +%} + + diff --git a/FindJavaObjects/findjobj.m b/FindJavaObjects/findjobj.m new file mode 100644 index 0000000..09f38e1 --- /dev/null +++ b/FindJavaObjects/findjobj.m @@ -0,0 +1,3459 @@ +function [handles,levels,parentIdx,listing] = findjobj(container)%,varargin) +%#ok<*CTCH,*ASGLU,*MSNU,*NASGU> +%findjobj Find java objects contained within a specified java container or Matlab GUI handle +% +% Syntax: +% [handles, levels, parentIds, listing] = findjobj(container, 'PropName',PropValue(s), ...) +% +% Input parameters: +% container - optional handle to java container uipanel or figure. If unsupplied then current figure will be used +% 'PropName',PropValue - optional list of property pairs (case insensitive). PropName may also be named -PropName +% 'position' - filter results based on those elements that contain the specified X,Y position or a java element +% Note: specify a Matlab position (X,Y = pixels from bottom left corner), not a java one +% 'size' - filter results based on those elements that have the specified W,H (in pixels) +% 'class' - filter results based on those elements that contain the substring (or java class) PropValue +% Note1: filtering is case insensitive and relies on regexp, so you can pass wildcards etc. +% Note2: '-class' is an undocumented findobj PropName, but only works on Matlab (not java) classes +% 'property' - filter results based on those elements that possess the specified case-insensitive property string +% Note1: passing a property value is possible if the argument following 'property' is a cell in the +% format of {'propName','propValue'}. Example: FINDJOBJ(...,'property',{'Text','click me'}) +% Note2: partial property names (e.g. 'Tex') are accepted, as long as they're not ambiguous +% 'depth' - filter results based on specified depth. 0=top-level, Inf=all levels (default=Inf) +% 'flat' - same as specifying: 'depth',0 +% 'not' - negates the following filter: 'not','class','c' returns all elements EXCEPT those with class 'c' +% 'persist' - persist figure components information, allowing much faster results for subsequent invocations +% 'nomenu' - skip menu processing, for "lean" list of handles & much faster processing; +% This option is the default for HG containers but not for figure, Java or no container +% 'print' - display all java elements in a hierarchical list, indented appropriately +% Note1: optional PropValue of element index or handle to java container +% Note2: normally this option would be placed last, after all filtering is complete. Placing this +% option before some filters enables debug print-outs of interim filtering results. +% Note3: output is to the Matlab command window unless the 'listing' (4th) output arg is requested +% 'list' - same as 'print' +% 'debug' - list found component positions in the Command Window +% +% Output parameters: +% handles - list of handles to java elements +% levels - list of corresponding hierarchy level of the java elements (top=0) +% parentIds - list of indexes (in unfiltered handles) of the parent container of the corresponding java element +% listing - results of 'print'/'list' options (empty if these options were not specified) +% +% Note: If no output parameter is specified, then an interactive window will be displayed with a +% ^^^^ tree view of all container components, their properties and callbacks. +% +% Examples: +% findjobj; % display list of all javaelements of currrent figure in an interactive GUI +% handles = findjobj; % get list of all java elements of current figure (inc. menus, toolbars etc.) +% findjobj('print'); % list all java elements in current figure +% findjobj('print',6); % list all java elements in current figure, contained within its 6th element +% handles = findjobj(hButton); % hButton is a matlab button +% handles = findjobj(gcf,'position',getpixelposition(hButton,1)); % same as above but also return hButton's panel +% handles = findjobj(hButton,'persist'); % same as above, persist info for future reuse +% handles = findjobj('class','pushbutton'); % get all pushbuttons in current figure +% handles = findjobj('class','pushbutton','position',123,456); % get all pushbuttons at the specified position +% handles = findjobj(gcf,'class','pushbutton','size',23,15); % get all pushbuttons with the specified size +% handles = findjobj('property','Text','not','class','button'); % get all non-button elements with 'text' property +% handles = findjobj('-property',{'Text','click me'}); % get all elements with 'text' property = 'click me' +% +% Sample usage: +% hButton = uicontrol('string','click me'); +% jButton = findjobj(hButton,'nomenu'); +% % or: jButton = findjobj('property',{'Text','click me'}); +% jButton.setFlyOverAppearance(1); +% jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); +% set(jButton,'FocusGainedCallback',@myMatlabFunction); % some 30 callback points available... +% jButton.get; % list all changeable properties... +% +% hEditbox = uicontrol('style','edit'); +% jEditbox = findjobj(hEditbox,'nomenu'); +% jEditbox.setCaretColor(java.awt.Color.red); +% jEditbox.KeyTypedCallback = @myCallbackFunc; % many more callbacks where this came from... +% jEdit.requestFocus; +% +% Technical explanation & details: +% http://undocumentedmatlab.com/blog/findjobj/ +% http://undocumentedmatlab.com/blog/findjobj-gui-display-container-hierarchy/ +% +% Known issues/limitations: +% - Cannot currently process multiple container objects - just one at a time +% - Initial processing is a bit slow when the figure is laden with many UI components (so better use 'persist') +% - Passing a simple container Matlab handle is currently filtered by its position+size: should find a better way to do this +% - Matlab uipanels are not implemented as simple java panels, and so they can't be found using this utility +% - Labels have a write-only text property in java, so they can't be found using the 'property',{'Text','string'} notation +% +% Warning: +% This code heavily relies on undocumented and unsupported Matlab functionality. +% It works on Matlab 7+, but use at your own risk! +% +% Bugs and suggestions: +% Please send to Yair Altman (altmany at gmail dot com) +% +% Change log: +% 2019-07-03: Additional fix for R2018b; added separate findjobj_fast utility +% 2018-09-21: Fix for R2018b suggested by Eddie (FEX); speedup suggested by Martin Lehmann (FEX); alert if trying to use with uifigure +% 2017-04-13: Fixed two edge-cases (one suggested by H. Koch) +% 2016-04-19: Fixed edge-cases in old Matlab release; slightly improved performance even further +% 2016-04-14: Improved performance for the most common use-case (single input/output): improved code + allow inspecting groot +% 2016-04-11: Improved performance for the most common use-case (single input/output) +% 2015-01-12: Differentiate between overlapping controls (for example in different tabs); fixed case of docked figure +% 2014-10-20: Additional fixes for R2014a, R2014b +% 2014-10-13: Fixes for R2014b +% 2014-01-04: Minor fix for R2014a; check for newer FEX version up to twice a day only +% 2013-12-29: Only check for newer FEX version in non-deployed mode; handled case of invisible figure container +% 2013-10-08: Fixed minor edge case (retrieving multiple scroll-panes) +% 2013-06-30: Additional fixes for the upcoming HG2 +% 2013-05-15: Fix for the upcoming HG2 +% 2013-02-21: Fixed HG-Java warnings +% 2013-01-23: Fixed callbacks table grouping & editing bugs; added hidden properties to the properties tooltip; updated help section +% 2013-01-13: Improved callbacks table; fixed tree refresh failure; fixed: tree node-selection didn't update the props pane nor flash the selected component +% 2012-07-25: Fixes for R2012a as well as some older Matlab releases +% 2011-12-07: Fixed 'File is empty' messages in compiled apps +% 2011-11-22: Fix suggested by Ward +% 2011-02-01: Fixes for R2011a +% 2010-06-13: Fixes for R2010b; fixed download (m-file => zip-file) +% 2010-04-21: Minor fix to support combo-boxes (aka drop-down, popup-menu) on Windows +% 2010-03-17: Important release: Fixes for R2010a, debug listing, objects not found, component containers that should be ignored etc. +% 2010-02-04: Forced an EDT redraw before processing; warned if requested handle is invisible +% 2010-01-18: Found a way to display label text next to the relevant node name +% 2009-10-28: Fixed uitreenode warning +% 2009-10-27: Fixed auto-collapse of invisible container nodes; added dynamic tree tooltips & context-menu; minor fix to version-check display +% 2009-09-30: Fix for Matlab 7.0 as suggested by Oliver W; minor GUI fix (classname font) +% 2009-08-07: Fixed edge-case of missing JIDE tables +% 2009-05-24: Added support for future Matlab versions that will not support JavaFrame +% 2009-05-15: Added sanity checks for axes items +% 2009-04-28: Added 'debug' input arg; increased size tolerance 1px => 2px +% 2009-04-23: Fixed location of popupmenus (always 20px high despite what's reported by Matlab...); fixed uiinspect processing issues; added blog link; narrower action buttons +% 2009-04-09: Automatic 'nomenu' for uicontrol inputs; significant performance improvement +% 2009-03-31: Fixed position of some Java components; fixed properties tooltip; fixed node visibility indication +% 2009-02-26: Indicated components visibility (& auto-collapse non-visible containers); auto-highlight selected component; fixes in node icons, figure title & tree refresh; improved error handling; display FindJObj version update description if available +% 2009-02-24: Fixed update check; added dedicated labels icon +% 2009-02-18: Fixed compatibility with old Matlab versions +% 2009-02-08: Callbacks table fixes; use uiinspect if available; fix update check according to new FEX website +% 2008-12-17: R2008b compatibility +% 2008-09-10: Fixed minor bug as per Johnny Smith +% 2007-11-14: Fixed edge case problem with class properties tooltip; used existing object icon if available; added checkbox option to hide standard callbacks +% 2007-08-15: Fixed object naming relative property priorities; added sanity check for illegal container arg; enabled desktop (0) container; cleaned up warnings about special class objects +% 2007-08-03: Fixed minor tagging problems with a few Java sub-classes; displayed UIClassID if text/name/tag is unavailable +% 2007-06-15: Fixed problems finding HG components found by J. Wagberg +% 2007-05-22: Added 'nomenu' option for improved performance; fixed 'export handles' bug; fixed handle-finding/display bugs; "cleaner" error handling +% 2007-04-23: HTMLized classname tooltip; returned top-level figure Frame handle for figure container; fixed callbacks table; auto-checked newer version; fixed Matlab 7.2 compatibility issue; added HG objects tree +% 2007-04-19: Fixed edge case of missing figure; displayed tree hierarchy in interactive GUI if no output args; workaround for figure sub-menus invisible unless clicked +% 2007-04-04: Improved performance; returned full listing results in 4th output arg; enabled partial property names & property values; automatically filtered out container panels if children also returned; fixed finding sub-menu items +% 2007-03-20: First version posted on the MathWorks file exchange: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317 +% +% See also: +% java, handle, findobj, findall, javaGetHandles, uiinspect (on the File Exchange) + +% License to use and modify this code is granted freely to all interested, as long as the original author is +% referenced and attributed as such. The original author maintains the right to be solely associated with this work. + +% Programmed and Copyright by Yair M. Altman: altmany(at)gmail.com +% $Revision: 1.52 $ $Date: 2019/07/03 19:09:23 $ + + % Ensure Java AWT is enabled + error(javachk('awt')); + + persistent pContainer pHandles pLevels pParentIdx pPositions + + try + % Initialize + handles = handle([]); + levels = []; + parentIdx = []; + positions = []; % Java positions start at the top-left corner + %sizes = []; + listing = ''; + hg_levels = []; + hg_handles = handle([]); % HG handles are double + hg_parentIdx = []; + nomenu = false; + menuBarFoundFlag = false; + hFig = []; + + % Force an EDT redraw before processing, to ensure all uicontrols etc. are rendered + drawnow; pause(0.02); + + % Default container is the current figure's root panel + if nargin + if isempty(container) % empty container - bail out + return; + elseif ischar(container) % container skipped - this is part of the args list... + varargin = [{container}, varargin]; + origContainer = getCurrentFigure; + [container,contentSize] = getRootPanel(origContainer); + elseif isequal(container,0) % root + origContainer = handle(container); + container = com.mathworks.mde.desk.MLDesktop.getInstance.getMainFrame; + contentSize = [container.getWidth, container.getHeight]; + elseif ishghandle(container) % && ~isa(container,'java.awt.Container') + container = container(1); % another current limitation... + hFig = ancestor(container,'figure'); + oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + try hJavaFrame = get(hFig,'JavaFrame'); catch, hJavaFrame = []; end + warning(oldWarn); + if isempty(hJavaFrame) % alert if trying to use with web-based (not Java-based) uifigure + error('YMA:findjobj:NonJavaFigure', 'Findjobj only works with Java-based figures, not web-based (App Designer) uifigures'); + end + origContainer = handle(container); + if isa(origContainer,'uimenu') || isa(origContainer,'matlab.ui.container.Menu') + % getpixelposition doesn't work for menus... - damn! + varargin = {'class','MenuPeer', 'property',{'Label',strrep(get(container,'Label'),'&','')}, varargin{:}}; + elseif ~isa(origContainer, 'figure') && ~isempty(hFig) && ~isa(origContainer, 'matlab.ui.Figure') + % For a single input & output, try using the fast variant + if nargin==1 && nargout==1 + try + handles = findjobj_fast(container); + if ~isempty(handles) + try handles = handle(handles,'callbackproperties'); catch, end + return + end + catch + % never mind - proceed normally using the slower variant below... + end + end + + % See limitations section above: should find a better way to directly refer to the element's java container + try + % Note: 'PixelBounds' is undocumented and unsupported, but much faster than getpixelposition! + % ^^^^ unfortunately, its Y position is inaccurate in some cases - damn! + %size = get(container,'PixelBounds'); + pos = fix(getpixelposition(container,1)); + %varargin = {'position',pos(1:2), 'size',pos(3:4), 'not','class','java.awt.Panel', varargin{:}}; + catch + try + figName = get(hFig,'name'); + if strcmpi(get(hFig,'number'),'on') + figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $',''); + end + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jFig = mde.getClient(figName); + if isempty(jFig), error('dummy'); end + catch + jFig = get(hJavaFrame,'FigurePanelContainer'); + end + pos = []; + try + pxsize = get(container,'PixelBounds'); + pos = [pxsize(1)+5, jFig.getHeight - (pxsize(4)-5)]; + catch + % never mind... + end + end + if size(pos,2) == 2 + pos(:,3:4) = 0; + end + if ~isempty(pos) + if isa(handle(container),'uicontrol') && strcmp(get(container,'style'),'popupmenu') + % popupmenus (combo-box dropdowns) are always 20px high + pos(2) = pos(2) + pos(4) - 20; + pos(4) = 20; + end + %varargin = {'position',pos(1:2), 'size',size(3:4)-size(1:2)-10, 'not','class','java.awt.Panel', varargin{:}}; + varargin = {'position',pos(1:2)+[0,pos(4)], 'size',pos(3:4), 'not','class','java.awt.Panel', 'nomenu', varargin{:}}; + end + elseif isempty(hFig) + hFig = handle(container); + end + [container,contentSize] = getRootPanel(hFig); + elseif isjava(container) + % Maybe a java container obj (will crash otherwise) + origContainer = container; + contentSize = [container.getWidth, container.getHeight]; + else + error('YMA:findjobj:IllegalContainer','Input arg does not appear to be a valid GUI object'); + end + else + % Default container = current figure + origContainer = getCurrentFigure; + [container,contentSize] = getRootPanel(origContainer); + end + + % Check persistency + if isequal(pContainer,container) + % persistency requested and the same container is reused, so reuse the hierarchy information + [handles,levels,parentIdx,positions] = deal(pHandles, pLevels, pParentIdx, pPositions); + else + % Pre-allocate space of complex data containers for improved performance + handles = repmat(handles,1,1000); + positions = zeros(1000,2); + + % Check whether to skip menu processing + nomenu = paramSupplied(varargin,'nomenu'); + + % Traverse the container hierarchy and extract the elements within + traverseContainer(container,0,1); + + % Remove unnecessary pre-allocated elements + dataLen = length(levels); + handles (dataLen+1:end) = []; + positions(dataLen+1:end,:) = []; + end + + % Process persistency check before any filtering is done + if paramSupplied(varargin,'persist') + [pContainer, pHandles, pLevels, pParentIdx, pPositions] = deal(container,handles,levels,parentIdx,positions); + end + + % Save data for possible future use in presentObjectTree() below + allHandles = handles; + allLevels = levels; + allParents = parentIdx; + selectedIdx = 1:length(handles); + %[positions(:,1)-container.getX, container.getHeight - positions(:,2)] + + % Debug-list all found compponents and their positions + if paramSupplied(varargin,'debug') + for origHandleIdx = 1 : length(allHandles) + thisObj = handles(origHandleIdx); + pos = sprintf('%d,%d %dx%d',[positions(origHandleIdx,:) getWidth(thisObj) getHeight(thisObj)]); + disp([repmat(' ',1,levels(origHandleIdx)) '[' pos '] ' char(toString(thisObj))]); + end + end + + % Process optional args + % Note: positions is NOT returned since it's based on java coord system (origin = top-left): will confuse Matlab users + processArgs(varargin{:}); + + % De-cell and trim listing, if only one element was found (no use for indented listing in this case) + if iscell(listing) && length(listing)==1 + listing = strtrim(listing{1}); + end + + % If no output args and no listing requested, present the FINDJOBJ interactive GUI + if nargout == 0 && isempty(listing) + + % Get all label positions + hg_labels = []; + labelPositions = getLabelsJavaPos(container); + + % Present the GUI (object tree) + if ~isempty(container) + presentObjectTree(); + else + warnInvisible(varargin{:}); + end + + % Display the listing, if this was specifically requested yet no relevant output arg was specified + elseif nargout < 4 && ~isempty(listing) + if ~iscell(listing) + disp(listing); + else + for listingIdx = 1 : length(listing) + disp(listing{listingIdx}); + end + end + end + + % If the number of output handles does not match the number of inputs, try to match via tooltips + if nargout && numel(handles) ~= numel(origContainer) + newHandles = handle([]); + switchHandles = false; + handlesToCheck = handles; + if isempty(handles) + handlesToCheck = allHandles; + end + for origHandleIdx = 1 : numel(origContainer) + try + thisContainer = origContainer(origHandleIdx); + if isa(thisContainer,'figure') || isa(thisContainer,'matlab.ui.Figure') + break; + end + try + newHandles(origHandleIdx) = handlesToCheck(origHandleIdx); %#ok + catch + % maybe no corresponding handle in [handles] + end + + % Assign a new random tooltip to the original (Matlab) handle + oldTooltip = get(thisContainer,'Tooltip'); + newTooltip = num2str(rand,99); + try + set(thisContainer,'TooltipString',newTooltip); + catch + set(thisContainer,'Tooltip',newTooltip); + end + drawnow; % force the Java handle to sync with the Matlab prop-change + try + % Search for a Java handle that has the newly-generated tooltip + for newHandleIdx = 1 : numel(handlesToCheck) + testTooltip = ''; + thisHandle = handlesToCheck(newHandleIdx); + try + testTooltip = char(thisHandle.getToolTipText); + catch + try testTooltip = char(thisHandle.getTooltipText); catch, end + end + if isempty(testTooltip) + % One more attempt - assume it's enclosed by a scroll-pane + try testTooltip = char(thisHandle.getViewport.getView.getToolTipText); catch, end + end + if strcmp(testTooltip, newTooltip) + newHandles(origHandleIdx) = thisHandle; + switchHandles = true; + break; + end + end + catch + % never mind - skip to the next handle + end + set(thisContainer,'Tooltip',oldTooltip); + catch + % never mind - skip to the next handle (maybe handle doesn't have a tooltip prop) + end + end + if switchHandles + handles = newHandles; + end + end + + % Display a warning if the requested handle was not found because it's invisible + if nargout && isempty(handles) + warnInvisible(varargin{:}); + end + + return; %debug point + + catch + % 'Cleaner' error handling - strip the stack info etc. + err = lasterror; %#ok + err.message = regexprep(err.message,'Error using ==> [^\n]+\n',''); + if isempty(findstr(mfilename,err.message)) + % Indicate error origin, if not already stated within the error message + err.message = [mfilename ': ' err.message]; + end + rethrow(err); + end + + %% Display a warning if the requested handle was not found because it's invisible + function warnInvisible(varargin) + try + if strcmpi(get(hFig,'Visible'),'off') + pos = get(hFig,'Position'); + set(hFig, 'Position',pos-[5000,5000,0,0], 'Visible','on'); + drawnow; pause(0.01); + [handles,levels,parentIdx,listing] = findjobj(origContainer,varargin{:}); + set(hFig, 'Position',pos, 'Visible','off'); + end + catch + % ignore - move on... + end + try + stk = dbstack; + stkNames = {stk.name}; + OutputFcnIdx = find(~cellfun(@isempty,regexp(stkNames,'_OutputFcn'))); + if ~isempty(OutputFcnIdx) + OutputFcnName = stkNames{OutputFcnIdx}; + warning('YMA:FindJObj:OutputFcn',['No Java reference was found for the requested handle, because the figure is still invisible in ' OutputFcnName '()']); + elseif ishandle(origContainer) && isprop(origContainer,'Visible') && strcmpi(get(origContainer,'Visible'),'off') + warning('YMA:FindJObj:invisibleHandle','No Java reference was found for the requested handle, probably because it is still invisible'); + end + catch + % Never mind... + end + end + + %% Check existence of a (case-insensitive) optional parameter in the params list + function [flag,idx] = paramSupplied(paramsList,paramName) + %idx = find(~cellfun('isempty',regexpi(paramsList(cellfun(@ischar,paramsList)),['^-?' paramName]))); + idx = find(~cellfun('isempty',regexpi(paramsList(cellfun('isclass',paramsList,'char')),['^-?' paramName]))); % 30/9/2009 fix for ML 7.0 suggested by Oliver W + flag = any(idx); + end + + %% Get current figure (even if its 'HandleVisibility' property is 'off') + function curFig = getCurrentFigure + oldShowHidden = get(0,'ShowHiddenHandles'); + set(0,'ShowHiddenHandles','on'); % minor fix per Johnny Smith + curFig = gcf; + set(0,'ShowHiddenHandles',oldShowHidden); + end + + %% Get Java reference to top-level (root) panel - actually, a reference to the java figure + function [jRootPane,contentSize] = getRootPanel(hFig) + try + contentSize = [0,0]; % initialize + jRootPane = hFig; + figName = get(hFig,'name'); + if strcmpi(get(hFig,'number'),'on') + figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $',''); + end + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jFigPanel = mde.getClient(figName); + jRootPane = jFigPanel; + jRootPane = jFigPanel.getRootPane; + catch + try + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jFrame = get(hFig,'JavaFrame'); + jFigPanel = get(jFrame,'FigurePanelContainer'); + jRootPane = jFigPanel; + jRootPane = jFigPanel.getComponent(0).getRootPane; + catch + % Never mind + end + end + try + % If invalid RootPane - try another method... + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jFrame = get(hFig,'JavaFrame'); + jAxisComponent = get(jFrame,'AxisComponent'); + jRootPane = jAxisComponent.getParent.getParent.getRootPane; + catch + % Never mind + end + try + % If invalid RootPane, retry up to N times + tries = 10; + while isempty(jRootPane) && tries>0 % might happen if figure is still undergoing rendering... + drawnow; pause(0.001); + tries = tries - 1; + jRootPane = jFigPanel.getComponent(0).getRootPane; + end + + % If still invalid, use FigurePanelContainer which is good enough in 99% of cases... (menu/tool bars won't be accessible, though) + if isempty(jRootPane) + jRootPane = jFigPanel; + end + contentSize = [jRootPane.getWidth, jRootPane.getHeight]; + + % Try to get the ancestor FigureFrame + jRootPane = jRootPane.getTopLevelAncestor; + catch + % Never mind - FigurePanelContainer is good enough in 99% of cases... (menu/tool bars won't be accessible, though) + end + end + + %% Traverse the container hierarchy and extract the elements within + function traverseContainer(jcontainer,level,parent) + persistent figureComponentFound menuRootFound + + % Record the data for this node + %disp([repmat(' ',1,level) '<= ' char(jcontainer.toString)]) + thisIdx = length(levels) + 1; + levels(thisIdx) = level; + parentIdx(thisIdx) = parent; + try newHandle = handle(jcontainer,'callbackproperties'); catch, newHandle = handle(jcontainer); end + try handles(thisIdx) = newHandle; catch, handles = newHandle; end + try + positions(thisIdx,:) = getXY(jcontainer); + %sizes(thisIdx,:) = [jcontainer.getWidth, jcontainer.getHeight]; + catch + positions(thisIdx,:) = [0,0]; + %sizes(thisIdx,:) = [0,0]; + end + if level>0 + positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:); + if ~figureComponentFound && ... + strcmp(jcontainer.getName,'fComponentContainer') && ... + isa(jcontainer,'com.mathworks.hg.peer.FigureComponentContainer') % there are 2 FigureComponentContainers - only process one... + + % restart coordinate system, to exclude menu & toolbar areas + positions(thisIdx,:) = positions(thisIdx,:) - [jcontainer.getRootPane.getX, jcontainer.getRootPane.getY]; + figureComponentFound = true; + end + elseif level==1 + positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:); + else + % level 0 - initialize flags used later + figureComponentFound = false; + menuRootFound = false; + end + parentId = length(parentIdx); + + % Traverse Menu items, unless the 'nomenu' option was requested + if ~nomenu + try + for child = 1 : getNumMenuComponents(jcontainer) + traverseContainer(jcontainer.getMenuComponent(child-1),level+1,parentId); + end + catch + % Probably not a Menu container, but maybe a top-level JMenu, so discard duplicates + %if isa(handles(end).java,'javax.swing.JMenuBar') + if ~menuRootFound && strcmp(class(java(handles(end))),'javax.swing.JMenuBar') %faster... + if removeDuplicateNode(thisIdx) + menuRootFound = true; + return; + end + end + end + end + + % Now recursively process all this node's children (if any), except menu items if so requested + %if isa(jcontainer,'java.awt.Container') + try % try-catch is faster than checking isa(jcontainer,'java.awt.Container')... + %if jcontainer.getComponentCount, jcontainer.getComponents, end + if ~nomenu || menuBarFoundFlag || isempty(strfind(class(jcontainer),'FigureMenuBar')) + lastChildComponent = java.lang.Object; + child = 0; + while (child < jcontainer.getComponentCount) + childComponent = jcontainer.getComponent(child); + % Looping over menus sometimes causes jcontainer to get mixed up (probably a JITC bug), so identify & fix + if isequal(childComponent,lastChildComponent) + child = child + 1; + childComponent = jcontainer.getComponent(child); + end + lastChildComponent = childComponent; + %disp([repmat(' ',1,level) '=> ' num2str(child) ': ' char(class(childComponent))]) + traverseContainer(childComponent,level+1,parentId); + child = child + 1; + end + else + menuBarFoundFlag = true; % use this flag to skip further testing for FigureMenuBar + end + catch + % do nothing - probably not a container + %dispError + end + + % ...and yet another type of child traversal... + try + if ~isdeployed % prevent 'File is empty' messages in compiled apps + jc = jcontainer.java; + else + jc = jcontainer; + end + for child = 1 : jc.getChildCount + traverseContainer(jc.getChildAt(child-1),level+1,parentId); + end + catch + % do nothing - probably not a container + %dispError + end + + % TODO: Add axis (plot) component handles + end + + %% Get the XY location of a Java component + function xy = getXY(jcontainer) + % Note: getX/getY are better than get(..,'X') (mem leaks), + % ^^^^ but sometimes they fail and revert to getx.m ... + % Note2: try awtinvoke() catch is faster than checking ismethod()... + % Note3: using AWTUtilities.invokeAndWait() directly is even faster than awtinvoke()... + try %if ismethod(jcontainer,'getX') + %positions(thisIdx,:) = [jcontainer.getX, jcontainer.getY]; + cls = getClass(jcontainer); + location = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getLocation',[]),[]); + x = location.getX; + y = location.getY; + catch %else + try + x = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getX',[]),[]); + y = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getY',[]),[]); + catch + try + x = awtinvoke(jcontainer,'getX()'); + y = awtinvoke(jcontainer,'getY()'); + catch + x = get(jcontainer,'X'); + y = get(jcontainer,'Y'); + end + end + end + %positions(thisIdx,:) = [x, y]; + xy = [x,y]; + end + + %% Get the number of menu sub-elements + function numMenuComponents = getNumMenuComponents(jcontainer) + + % The following line will raise an Exception for anything except menus + numMenuComponents = jcontainer.getMenuComponentCount; + + % No error so far, so this must be a menu container... + % Note: Menu subitems are not visible until the top-level (root) menu gets initial focus... + % Try several alternatives, until we get a non-empty menu (or not...) + % TODO: Improve performance - this takes WAY too long... + if jcontainer.isTopLevelMenu && (numMenuComponents==0) + jcontainer.requestFocus; + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + jcontainer.setSelected(true); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + jcontainer.doClick; % needed in order to populate the sub-menu components + numMenuComponents = jcontainer.getMenuComponentCount; + if (numMenuComponents == 0) + drawnow; %pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + jcontainer.doClick; % close menu by re-clicking... + if (numMenuComponents == 0) + drawnow; %pause(0.001); + numMenuComponents = jcontainer.getMenuComponentCount; + end + else + % ok - found sub-items + % Note: no need to close menu since this will be done when focus moves to the FindJObj window + %jcontainer.doClick; % close menu by re-clicking... + end + end + end + jcontainer.setSelected(false); % de-select the menu + end + end + end + end + + %% Remove a specific tree node's data + function nodeRemovedFlag = removeDuplicateNode(thisIdx) + nodeRemovedFlag = false; + for idx = 1 : thisIdx-1 + if isequal(handles(idx),handles(thisIdx)) + levels(thisIdx) = []; + parentIdx(thisIdx) = []; + handles(thisIdx) = []; + positions(thisIdx,:) = []; + %sizes(thisIdx,:) = []; + nodeRemovedFlag = true; + return; + end + end + end + + %% Process optional args + function processArgs(varargin) + + % Initialize + invertFlag = false; + listing = ''; + + % Loop over all optional args + while ~isempty(varargin) && ~isempty(handles) + + % Process the arg (and all its params) + foundIdx = 1 : length(handles); + if iscell(varargin{1}), varargin{1} = varargin{1}{1}; end + if ~isempty(varargin{1}) && varargin{1}(1)=='-' + varargin{1}(1) = []; + end + switch lower(varargin{1}) + case 'not' + invertFlag = true; + case 'position' + [varargin,foundIdx] = processPositionArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'size' + [varargin,foundIdx] = processSizeArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'class' + [varargin,foundIdx] = processClassArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'property' + [varargin,foundIdx] = processPropertyArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'depth' + [varargin,foundIdx] = processDepthArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case 'flat' + varargin = {'depth',0, varargin{min(2:end):end}}; + [varargin,foundIdx] = processDepthArgs(varargin{:}); + if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end + case {'print','list'} + [varargin,listing] = processPrintArgs(varargin{:}); + case {'persist','nomenu','debug'} + % ignore - already handled in main function above + otherwise + error('YMA:findjobj:IllegalOption',['Option ' num2str(varargin{1}) ' is not a valid option. Type ''help ' mfilename ''' for the full options list.']); + end + + % If only parent-child pairs found + foundIdx = find(foundIdx); + if ~isempty(foundIdx) && isequal(parentIdx(foundIdx(2:2:end)),foundIdx(1:2:end)) + % Return just the children (the parent panels are uninteresting) + foundIdx(1:2:end) = []; + end + + % If several possible handles were found and the first is the container of the second + if length(foundIdx) == 2 && isequal(handles(foundIdx(1)).java, handles(foundIdx(2)).getParent) + % Discard the uninteresting component container + foundIdx(1) = []; + end + + % Filter the results + selectedIdx = selectedIdx(foundIdx); + handles = handles(foundIdx); + levels = levels(foundIdx); + parentIdx = parentIdx(foundIdx); + positions = positions(foundIdx,:); + + % Remove this arg and proceed to the next one + varargin(1) = []; + + end % Loop over all args + end + + %% Process 'print' option + function [varargin,listing] = processPrintArgs(varargin) + if length(varargin)<2 || ischar(varargin{2}) + % No second arg given, so use the first available element + listingContainer = handles(1); %#ok - used in evalc below + else + % Get the element to print from the specified second arg + if isnumeric(varargin{2}) && (varargin{2} == fix(varargin{2})) % isinteger doesn't work on doubles... + if (varargin{2} > 0) && (varargin{2} <= length(handles)) + listingContainer = handles(varargin{2}); %#ok - used in evalc below + elseif varargin{2} > 0 + error('YMA:findjobj:IllegalPrintFilter','Print filter index %g > number of available elements (%d)',varargin{2},length(handles)); + else + error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or positive numeric index into handles'); + end + elseif ismethod(varargin{2},'list') + listingContainer = varargin{2}; %#ok - used in evalc below + else + error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or numeric index into handles'); + end + varargin(2) = []; + end + + % use evalc() to capture output into a Matlab variable + %listing = evalc('listingContainer.list'); + + % Better solution: loop over all handles and process them one by one + listing = cell(length(handles),1); + for componentIdx = 1 : length(handles) + listing{componentIdx} = [repmat(' ',1,levels(componentIdx)) char(handles(componentIdx).toString)]; + end + end + + %% Process 'position' option + function [varargin,foundIdx] = processPositionArgs(varargin) + if length(varargin)>1 + positionFilter = varargin{2}; + %if (isjava(positionFilter) || iscom(positionFilter)) && ismethod(positionFilter,'getLocation') + try % try-catch is faster... + % Java/COM object passed - get its position + positionFilter = positionFilter.getLocation; + filterXY = [positionFilter.getX, positionFilter.getY]; + catch + if ~isscalar(positionFilter) + % position vector passed + if (length(positionFilter)>=2) && isnumeric(positionFilter) + % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left... + %positionFilter = java.awt.Point(positionFilter(1), container.getHeight - positionFilter(2)); + filterXY = [container.getX + positionFilter(1), container.getY + contentSize(2) - positionFilter(2)]; + + % Check for full Matlab position vector (x,y,w,h) + %if (length(positionFilter)==4) + % varargin{end+1} = 'size'; + % varargin{end+1} = fix(positionFilter(3:4)); + %end + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + elseif length(varargin)>2 + % x,y passed as separate arg values + if isnumeric(positionFilter) && isnumeric(varargin{3}) + % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left... + %positionFilter = java.awt.Point(positionFilter, container.getHeight - varargin{3}); + filterXY = [container.getX + positionFilter, container.getY + contentSize(2) - varargin{3}]; + varargin(3) = []; + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + else + error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair'); + end + end + + % Compute the required element positions in order to be eligible for a more detailed examination + % Note: based on the following constraints: 0 <= abs(elementX-filterX) + abs(elementY+elementH-filterY) < 7 + baseDeltas = [positions(:,1)-filterXY(1), positions(:,2)-filterXY(2)]; % faster than repmat()... + %baseHeight = - baseDeltas(:,2);% -abs(baseDeltas(:,1)); + %minHeight = baseHeight - 7; + %maxHeight = baseHeight + 7; + %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',positionFilter)),handles); % ARGH! - disallowed by Matlab! + %foundIdx = repmat(false,1,length(handles)); + %foundIdx(length(handles)) = false; % faster than repmat()... + foundIdx = (abs(baseDeltas(:,1)) < 7) & (abs(baseDeltas(:,2)) < 7); % & (minHeight >= 0); + %fi = find(foundIdx); + %for componentIdx = 1 : length(fi) + %foundIdx(componentIdx) = handles(componentIdx).getBounds.contains(positionFilter); + + % Search for a point no farther than 7 pixels away (prevents rounding errors) + %foundIdx(componentIdx) = handles(componentIdx).getLocationOnScreen.distanceSq(positionFilter) < 50; % fails for invisible components... + + %p = java.awt.Point(positions(componentIdx,1), positions(componentIdx,2) + handles(componentIdx).getHeight); + %foundIdx(componentIdx) = p.distanceSq(positionFilter) < 50; + + %foundIdx(componentIdx) = sum(([baseDeltas(componentIdx,1),baseDeltas(componentIdx,2)+handles(componentIdx).getHeight]).^2) < 50; + + % Following is the fastest method found to date: only eligible elements are checked in detailed + % elementHeight = handles(fi(componentIdx)).getHeight; + % foundIdx(fi(componentIdx)) = elementHeight > minHeight(fi(componentIdx)) && ... + % elementHeight < maxHeight(fi(componentIdx)); + %disp([componentIdx,elementHeight,minHeight(fi(componentIdx)),maxHeight(fi(componentIdx)),foundIdx(fi(componentIdx))]) + %end + + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'size' option + function [varargin,foundIdx] = processSizeArgs(varargin) + if length(varargin)>1 + sizeFilter = lower(varargin{2}); + %if (isjava(sizeFilter) || iscom(sizeFilter)) && ismethod(sizeFilter,'getSize') + try % try-catch is faster... + % Java/COM object passed - get its size + sizeFilter = sizeFilter.getSize; + filterWidth = sizeFilter.getWidth; + filterHeight = sizeFilter.getHeight; + catch + if ~isscalar(sizeFilter) + % size vector passed + if (length(sizeFilter)>=2) && isnumeric(sizeFilter) + %sizeFilter = java.awt.Dimension(sizeFilter(1),sizeFilter(2)); + filterWidth = sizeFilter(1); + filterHeight = sizeFilter(2); + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + elseif length(varargin)>2 + % w,h passed as separate arg values + if isnumeric(sizeFilter) && isnumeric(varargin{3}) + %sizeFilter = java.awt.Dimension(sizeFilter,varargin{3}); + filterWidth = sizeFilter; + filterHeight = varargin{3}; + varargin(3) = []; + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + else + error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair'); + end + end + %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',sizeFilter)),handles); % ARGH! - disallowed by Matlab! + foundIdx(length(handles)) = false; % faster than repmat()... + for componentIdx = 1 : length(handles) + %foundIdx(componentIdx) = handles(componentIdx).getSize.equals(sizeFilter); + % Allow a 2-pixel tollerance to account for non-integer pixel sizes + foundIdx(componentIdx) = abs(handles(componentIdx).getWidth - filterWidth) <= 3 && ... % faster than getSize.equals() + abs(handles(componentIdx).getHeight - filterHeight) <= 3; + end + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'class' option + function [varargin,foundIdx] = processClassArgs(varargin) + if length(varargin)>1 + classFilter = varargin{2}; + %if ismethod(classFilter,'getClass') + try % try-catch is faster... + classFilter = char(classFilter.getClass); + catch + if ~ischar(classFilter) + error('YMA:findjobj:IllegalClassFilter','Class filter must be a java object, class or string'); + end + end + + % Now convert all java classes to java.lang.Strings and compare to the requested filter string + try + foundIdx(length(handles)) = false; % faster than repmat()... + jClassFilter = java.lang.String(classFilter).toLowerCase; + for componentIdx = 1 : length(handles) + % Note: JVM 1.5's String.contains() appears slightly slower and is available only since Matlab 7.2 + foundIdx(componentIdx) = handles(componentIdx).getClass.toString.toLowerCase.indexOf(jClassFilter) >= 0; + end + catch + % Simple processing: slower since it does extra processing within opaque.char() + for componentIdx = 1 : length(handles) + % Note: using @toChar is faster but returns java String, not a Matlab char + foundIdx(componentIdx) = ~isempty(regexpi(char(handles(componentIdx).getClass),classFilter)); + end + end + + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'property' option + function [varargin,foundIdx] = processPropertyArgs(varargin) + if length(varargin)>1 + propertyName = varargin{2}; + if iscell(propertyName) + if length(propertyName) == 2 + propertyVal = propertyName{2}; + propertyName = propertyName{1}; + elseif length(propertyName) == 1 + propertyName = propertyName{1}; + else + error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}'); + end + end + if ~ischar(propertyName) + error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}'); + end + propertyName = lower(propertyName); + %foundIdx = arrayfun(@(h)isprop(h,propertyName),handles); % ARGH! - disallowed by Matlab! + foundIdx(length(handles)) = false; % faster than repmat()... + + % Split processing depending on whether a specific property value was requested (ugly but faster...) + if exist('propertyVal','var') + for componentIdx = 1 : length(handles) + try + % Find out whether this element has the specified property + % Note: findprop() and its return value schema.prop are undocumented and unsupported! + prop = findprop(handles(componentIdx),propertyName); % faster than isprop() & enables partial property names + + % If found, compare it to the actual element's property value + foundIdx(componentIdx) = ~isempty(prop) && isequal(get(handles(componentIdx),prop.Name),propertyVal); + catch + % Some Java classes have a write-only property (like LabelPeer with 'Text'), so we end up here + % In these cases, simply assume that the property value doesn't match and continue + foundIdx(componentIdx) = false; + end + end + else + for componentIdx = 1 : length(handles) + try + % Find out whether this element has the specified property + % Note: findprop() and its return value schema.prop are undocumented and unsupported! + foundIdx(componentIdx) = ~isempty(findprop(handles(componentIdx),propertyName)); + catch + foundIdx(componentIdx) = false; + end + end + end + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Process 'depth' option + function [varargin,foundIdx] = processDepthArgs(varargin) + if length(varargin)>1 + level = varargin{2}; + if ~isnumeric(level) + error('YMA:findjobj:IllegalDepthFilter','Depth filter must be a number (=maximal element depth)'); + end + foundIdx = (levels <= level); + varargin(2) = []; + else + foundIdx = []; + end + end + + %% Convert property data into a string + function data = charizeData(data) + if isa(data,'com.mathworks.hg.types.HGCallback') + data = get(data,'Callback'); + end + if ~ischar(data) && ~isa(data,'java.lang.String') + newData = strtrim(evalc('disp(data)')); + try + newData = regexprep(newData,' +',' '); + newData = regexprep(newData,'Columns \d+ through \d+\s',''); + newData = regexprep(newData,'Column \d+\s',''); + catch + %never mind... + end + if iscell(data) + newData = ['{ ' newData ' }']; + elseif isempty(data) + newData = ''; + elseif isnumeric(data) || islogical(data) || any(ishandle(data)) || numel(data) > 1 %&& ~isscalar(data) + newData = ['[' newData ']']; + end + data = newData; + elseif ~isempty(data) + data = ['''' data '''']; + end + end % charizeData + + %% Prepare a hierarchical callbacks table data + function setProp(list,name,value,category) + prop = eval('com.jidesoft.grid.DefaultProperty();'); % prevent JIDE alert by run-time (not load-time) evaluation + prop.setName(name); + prop.setType(java.lang.String('').getClass); + prop.setValue(value); + prop.setEditable(true); + prop.setExpert(true); + %prop.setCategory(['' category ' callbacks']); + prop.setCategory([category ' callbacks']); + list.add(prop); + end % getTreeData + + %% Prepare a hierarchical callbacks table data + function list = getTreeData(data) + list = java.util.ArrayList(); + names = regexprep(data,'([A-Z][a-z]+).*','$1'); + %hash = java.util.Hashtable; + others = {}; + for propIdx = 1 : size(data,1) + if (propIdx < size(data,1) && strcmp(names{propIdx},names{propIdx+1})) || ... + (propIdx > 1 && strcmp(names{propIdx},names{propIdx-1})) + % Child callback property + setProp(list,data{propIdx,1},data{propIdx,2},names{propIdx}); + else + % Singular callback property => Add to 'Other' category at bottom of the list + others(end+1,:) = data(propIdx,:); %#ok + end + end + for propIdx = 1 : size(others,1) + setProp(list,others{propIdx,1},others{propIdx,2},'Other'); + end + end % getTreeData + + %% Get callbacks table data + function [cbData, cbHeaders, cbTableEnabled] = getCbsData(obj, stripStdCbsFlag) + % Initialize + cbData = {'(no callbacks)'}; + cbHeaders = {'Callback name'}; + cbTableEnabled = false; + cbNames = {}; + + try + try + classHdl = classhandle(handle(obj)); + cbNames = get(classHdl.Events,'Name'); + if ~isempty(cbNames) && ~iscom(obj) %only java-based please... + cbNames = strcat(cbNames,'Callback'); + end + propNames = get(classHdl.Properties,'Name'); + catch + % Try to interpret as an MCOS class object + try + oldWarn = warning('off','MATLAB:structOnObject'); + dataFields = struct(obj); + warning(oldWarn); + catch + dataFields = get(obj); + end + propNames = fieldnames(dataFields); + end + propCbIdx = []; + if ischar(propNames), propNames={propNames}; end % handle case of a single callback + if ~isempty(propNames) + propCbIdx = find(~cellfun(@isempty,regexp(propNames,'(Fcn|Callback)$'))); + cbNames = unique([cbNames; propNames(propCbIdx)]); %#ok logical is faster but less debuggable... + end + if ~isempty(cbNames) + if stripStdCbsFlag + cbNames = stripStdCbs(cbNames); + end + if iscell(cbNames) + cbNames = sort(cbNames); + if size(cbNames,1) < size(cbNames,2) + cbNames = cbNames'; + end + end + hgHandleFlag = 0; try hgHandleFlag = ishghandle(obj); catch, end %#ok + try + obj = handle(obj,'CallbackProperties'); + catch + hgHandleFlag = 1; + end + if hgHandleFlag + % HG handles don't allow CallbackProperties - search only for *Fcn + %cbNames = propNames(propCbIdx); + end + if iscom(obj) + cbs = obj.eventlisteners; + if ~isempty(cbs) + cbNamesRegistered = cbs(:,1); + cbData = setdiff(cbNames,cbNamesRegistered); + %cbData = charizeData(cbData); + if size(cbData,2) > size(cbData(1)) + cbData = cbData'; + end + cbData = [cbData, cellstr(repmat(' ',length(cbData),1))]; + cbData = [cbData; cbs]; + [sortedNames, sortedIdx] = sort(cbData(:,1)); + sortedCbs = cellfun(@charizeData,cbData(sortedIdx,2),'un',0); + cbData = [sortedNames, sortedCbs]; + else + cbData = [cbNames, cellstr(repmat(' ',length(cbNames),1))]; + end + elseif iscell(cbNames) + cbNames = sort(cbNames); + %cbData = [cbNames, get(obj,cbNames)']; + cbData = cbNames; + oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty'); + warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty'); + for idx = 1 : length(cbNames) + try + cbData{idx,2} = charizeData(get(obj,cbNames{idx})); + catch + cbData{idx,2} = '(callback value inaccessible)'; + end + end + warning(oldWarn); + else % only one event callback + %cbData = {cbNames, get(obj,cbNames)'}; + %cbData{1,2} = charizeData(cbData{1,2}); + try + cbData = {cbNames, charizeData(get(obj,cbNames))}; + catch + cbData = {cbNames, '(callback value inaccessible)'}; + end + end + cbHeaders = {'Callback name','Callback value'}; + cbTableEnabled = true; + end + catch + % never mind - use default (empty) data + end + end % getCbsData + + %% Get relative (0.0-1.0) divider location + function divLocation = getRalativeDivlocation(jDiv) + divLocation = jDiv.getDividerLocation; + if divLocation > 1 % i.e. [pixels] + visibleRect = jDiv.getVisibleRect; + if jDiv.getOrientation == 0 % vertical + start = visibleRect.getY; + extent = visibleRect.getHeight - start; + else + start = visibleRect.getX; + extent = visibleRect.getWidth - start; + end + divLocation = (divLocation - start) / extent; + end + end % getRalativeDivlocation + + %% Try to set a treenode icon based on a container's icon + function setTreeNodeIcon(treenode,container) + try + iconImage = []; + iconImage = container.getIcon; + if ~isempty(findprop(handle(iconImage),'Image')) % get(iconImage,'Image') is easier but leaks memory... + iconImage = iconImage.getImage; + else + a=b; %#ok cause an error + end + catch + try + iconImage = container.getIconImage; + catch + try + if ~isempty(iconImage) + ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment; + gd = ge.getDefaultScreenDevice; + gc = gd.getDefaultConfiguration; + image = gc.createCompatibleImage(iconImage.getIconWidth, iconImage.getIconHeight); % a BufferedImage object + g = image.createGraphics; + iconImage.paintIcon([], g, 0, 0); + g.dispose; + iconImage = image; + end + catch + % never mind... + end + end + end + if ~isempty(iconImage) + iconImage = setIconSize(iconImage); + treenode.setIcon(iconImage); + end + end % setTreeNodeIcon + + %% Present the object hierarchy tree + function presentObjectTree() + persistent lastVersionCheck + if isempty(lastVersionCheck), lastVersionCheck = now-1; end + + import java.awt.* + import javax.swing.* + hTreeFig = findall(0,'tag','findjobjFig'); + iconpath = [matlabroot, '/toolbox/matlab/icons/']; + cbHideStd = 0; % Initial state of the cbHideStdCbs checkbox + if isempty(hTreeFig) + % Prepare the figure + hTreeFig = figure('tag','findjobjFig','menuBar','none','toolBar','none','Name','FindJObj','NumberTitle','off','handleVisibility','off','IntegerHandle','off'); + figIcon = ImageIcon([iconpath 'tool_legend.gif']); + drawnow; + try + mde = com.mathworks.mde.desk.MLDesktop.getInstance; + jTreeFig = mde.getClient('FindJObj').getTopLevelAncestor; + jTreeFig.setIcon(figIcon); + catch + warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility + jTreeFig = get(hTreeFig,'JavaFrame'); + jTreeFig.setFigureIcon(figIcon); + end + vsplitPaneLocation = 0.8; + hsplitPaneLocation = 0.5; + else + % Remember cbHideStdCbs checkbox & dividers state for later + userdata = get(hTreeFig, 'userdata'); + try cbHideStd = userdata.cbHideStdCbs.isSelected; catch, end %#ok + try + vsplitPaneLocation = getRalativeDivlocation(userdata.vsplitPane); + hsplitPaneLocation = getRalativeDivlocation(userdata.hsplitPane); + catch + vsplitPaneLocation = 0.8; + hsplitPaneLocation = 0.5; + end + + % Clear the figure and redraw + clf(hTreeFig); + figure(hTreeFig); % bring to front + end + + % Traverse all HG children, if root container was a HG handle + if ishghandle(origContainer) %&& ~isequal(origContainer,container) + traverseHGContainer(origContainer,0,0); + end + + % Prepare the tree pane + warning('off','MATLAB:uitreenode:MigratingFunction'); % R2008b compatibility + warning('off','MATLAB:uitreenode:DeprecatedFunction'); % R2008a compatibility + tree_h = com.mathworks.hg.peer.UITreePeer; + try tree_h = javaObjectEDT(tree_h); catch, end + tree_hh = handle(tree_h,'CallbackProperties'); + hasChildren = sum(allParents==1) > 1; + icon = [iconpath 'upfolder.gif']; + [rootName, rootTitle] = getNodeName(container); + try + root = uitreenode('v0', handle(container), rootName, icon, ~hasChildren); + catch % old matlab version don't have the 'v0' option + root = uitreenode(handle(container), rootName, icon, ~hasChildren); + end + setTreeNodeIcon(root,container); % constructor must accept a char icon unfortunately, so need to do this afterwards... + if ~isempty(rootTitle) + set(hTreeFig, 'Name',['FindJObj - ' char(rootTitle)]); + end + nodedata.idx = 1; + nodedata.obj = container; + set(root,'userdata',nodedata); + root.setUserObject(container); + setappdata(root,'childHandle',container); + tree_h.setRoot(root); + treePane = tree_h.getScrollPane; + treePane.setMinimumSize(Dimension(50,50)); + jTreeObj = treePane.getViewport.getComponent(0); + jTreeObj.setShowsRootHandles(true) + jTreeObj.getSelectionModel.setSelectionMode(javax.swing.tree.TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); + %jTreeObj.setVisible(0); + %jTreeObj.getCellRenderer.setLeafIcon([]); + %jTreeObj.getCellRenderer.setOpenIcon(figIcon); + %jTreeObj.getCellRenderer.setClosedIcon([]); + treePanel = JPanel(BorderLayout); + treePanel.add(treePane, BorderLayout.CENTER); + progressBar = JProgressBar(0); + progressBar.setMaximum(length(allHandles) + length(hg_handles)); % = # of all nodes + treePanel.add(progressBar, BorderLayout.SOUTH); + + % Prepare the image pane +%disable for now, until we get it working... +%{ + try + hFig = ancestor(origContainer,'figure'); + [cdata, cm] = getframe(hFig); %#ok cm unused + tempfname = [tempname '.png']; + imwrite(cdata,tempfname); % don't know how to pass directly to BufferedImage, so use disk... + jImg = javax.imageio.ImageIO.read(java.io.File(tempfname)); + try delete(tempfname); catch end + imgPanel = JPanel(); + leftPanel = JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, imgPanel); + leftPanel.setOneTouchExpandable(true); + leftPanel.setContinuousLayout(true); + leftPanel.setResizeWeight(0.8); + catch + leftPanel = treePanel; + end +%} + leftPanel = treePanel; + + % Prepare the inspector pane + classNameLabel = JLabel([' ' char(class(container))]); + classNameLabel.setForeground(Color.blue); + updateNodeTooltip(container, classNameLabel); + inspectorPanel = JPanel(BorderLayout); + inspectorPanel.add(classNameLabel, BorderLayout.NORTH); + % TODO: Maybe uncomment the following when we add the HG tree - in the meantime it's unused (java properties are un-groupable) + %objReg = com.mathworks.services.ObjectRegistry.getLayoutRegistry; + %toolBar = awtinvoke('com.mathworks.mlwidgets.inspector.PropertyView$ToolBarStyle','valueOf(Ljava.lang.String;)','GROUPTOOLBAR'); + %inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView(objReg, toolBar); + inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView; + identifiers = disableDbstopError; %#ok "dbstop if error" causes inspect.m to croak due to a bug - so workaround + inspectorPane.setObject(container); + inspectorPane.setAutoUpdate(true); + % TODO: Add property listeners + % TODO: Display additional props + inspectorTable = inspectorPane; + try + while ~isa(inspectorTable,'javax.swing.JTable') + inspectorTable = inspectorTable.getComponent(0); + end + catch + % R2010a + inspectorTable = inspectorPane.getComponent(0).getScrollPane.getViewport.getComponent(0); + end + toolTipText = 'hover mouse over the red classname above to see the full list of properties'; + inspectorTable.setToolTipText(toolTipText); + jideTableUtils = []; + try + % Try JIDE features - see http://www.jidesoft.com/products/JIDE_Grids_Developer_Guide.pdf + com.mathworks.mwswing.MJUtilities.initJIDE; + jideTableUtils = eval('com.jidesoft.grid.TableUtils;'); % prevent JIDE alert by run-time (not load-time) evaluation + jideTableUtils.autoResizeAllColumns(inspectorTable); + inspectorTable.setRowAutoResizes(true); + inspectorTable.getModel.setShowExpert(1); + catch + % JIDE is probably unavailable - never mind... + end + inspectorPanel.add(inspectorPane, BorderLayout.CENTER); + % TODO: Add data update listeners + + % Prepare the callbacks pane + callbacksPanel = JPanel(BorderLayout); + stripStdCbsFlag = true; % initial value + [cbData, cbHeaders, cbTableEnabled] = getCbsData(container, stripStdCbsFlag); + %{ + %classHdl = classhandle(handle(container)); + %eventNames = get(classHdl.Events,'Name'); + %if ~isempty(eventNames) + % cbNames = sort(strcat(eventNames,'Callback')); + % try + % cbData = [cbNames, get(container,cbNames)']; + % catch + % % R2010a + % cbData = cbNames; + % if isempty(cbData) + % cbData = {}; + % elseif ~iscell(cbData) + % cbData = {cbData}; + % end + % for idx = 1 : length(cbNames) + % cbData{idx,2} = get(container,cbNames{idx}); + % end + % end + % cbTableEnabled = true; + %else + % cbData = {'(no callbacks)',''}; + % cbTableEnabled = false; + %end + %cbHeaders = {'Callback name','Callback value'}; + %} + try + % Use JideTable if available on this system + %callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); %#ok + %callbacksTable = eval('com.jidesoft.grid.PropertyTable(callbacksTableModel);'); % prevent JIDE alert by run-time (not load-time) evaluation + try + list = getTreeData(cbData); %#ok + model = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Auto-expand if only one category + if model.getRowCount==1 % length(model.getCategories)==1 fails for some unknown reason... + model.expandFirstLevel; + end + + %callbacksTable = eval('com.jidesoft.grid.TreeTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + callbacksTable = eval('com.jidesoft.grid.PropertyTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + %callbacksTable.expandFirstLevel; + callbacksTable.setShowsRootHandles(true); + callbacksTable.setShowTreeLines(false); + %callbacksTable.setShowNonEditable(0); %=SHOW_NONEDITABLE_NEITHER + callbacksPane = eval('com.jidesoft.grid.PropertyPane(callbacksTable);'); % prevent JIDE alert by run-time (not load-time) evaluation + callbacksPane.setShowDescription(false); + catch + callbacksTable = eval('com.jidesoft.grid.TreeTable(cbData,cbHeaders);'); % prevent JIDE alert by run-time (not load-time) evaluation + end + callbacksTable.setRowAutoResizes(true); + callbacksTable.setColumnAutoResizable(true); + callbacksTable.setColumnResizable(true); + jideTableUtils.autoResizeAllColumns(callbacksTable); + callbacksTable.setTableHeader([]); % hide the column headers since now we can resize columns with the gridline + callbacksLabel = JLabel(' Callbacks:'); % The column headers are replaced with a header label + callbacksLabel.setForeground(Color.blue); + %callbacksPanel.add(callbacksLabel, BorderLayout.NORTH); + + % Add checkbox to show/hide standard callbacks + callbacksTopPanel = JPanel; + callbacksTopPanel.setLayout(BoxLayout(callbacksTopPanel, BoxLayout.LINE_AXIS)); + callbacksTopPanel.add(callbacksLabel); + callbacksTopPanel.add(Box.createHorizontalGlue); + jcb = JCheckBox('Hide standard callbacks', cbHideStd); + set(handle(jcb,'CallbackProperties'), 'ActionPerformedCallback',{@cbHideStdCbs_Callback,callbacksTable}); + try + set(jcb, 'userdata',callbacksTable, 'tooltip','Hide standard Swing callbacks - only component-specific callbacks will be displayed'); + catch + jcb.setToolTipText('Hide standard Swing callbacks - only component-specific callbacks will be displayed'); + %setappdata(jcb,'userdata',callbacksTable); + end + callbacksTopPanel.add(jcb); + callbacksPanel.add(callbacksTopPanel, BorderLayout.NORTH); + catch + % Otherwise, use a standard Swing JTable (keep the headers to enable resizing) + callbacksTable = JTable(cbData,cbHeaders); + end + cbToolTipText = 'Callbacks may be ''strings'', @funcHandle or {@funcHandle,arg1,...}'; + callbacksTable.setToolTipText(cbToolTipText); + callbacksTable.setGridColor(inspectorTable.getGridColor); + cbNameTextField = JTextField; + cbNameTextField.setEditable(false); % ensure that the callback names are not modified... + cbNameCellEditor = DefaultCellEditor(cbNameTextField); + cbNameCellEditor.setClickCountToStart(intmax); % i.e, never enter edit mode... + callbacksTable.getColumnModel.getColumn(0).setCellEditor(cbNameCellEditor); + if ~cbTableEnabled + try callbacksTable.getColumnModel.getColumn(1).setCellEditor(cbNameCellEditor); catch, end + end + hModel = callbacksTable.getModel; + set(handle(hModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,container,callbacksTable}); + %set(hModel, 'UserData',container); + try + cbScrollPane = callbacksPane; %JScrollPane(callbacksPane); + %cbScrollPane.setHorizontalScrollBarPolicy(cbScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + catch + cbScrollPane = JScrollPane(callbacksTable); + cbScrollPane.setVerticalScrollBarPolicy(cbScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + end + callbacksPanel.add(cbScrollPane, BorderLayout.CENTER); + callbacksPanel.setToolTipText(cbToolTipText); + + % Prepare the top-bottom JSplitPanes + vsplitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, inspectorPanel, callbacksPanel); + vsplitPane.setOneTouchExpandable(true); + vsplitPane.setContinuousLayout(true); + vsplitPane.setResizeWeight(0.8); + + % Prepare the left-right JSplitPane + hsplitPane = JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, vsplitPane); + hsplitPane.setOneTouchExpandable(true); + hsplitPane.setContinuousLayout(true); + hsplitPane.setResizeWeight(0.6); + pos = getpixelposition(hTreeFig); + + % Prepare the bottom pane with all buttons + lowerPanel = JPanel(FlowLayout); + blogUrlLabel = 'Undocumented
    Matlab.com
    '; + jWebsite = createJButton(blogUrlLabel, @btWebsite_Callback, 'Visit the UndocumentedMatlab.com blog'); + jWebsite.setContentAreaFilled(0); + lowerPanel.add(jWebsite); + lowerPanel.add(createJButton('Refresh
    tree', {@btRefresh_Callback, origContainer, hTreeFig}, 'Rescan the component tree, from the root down')); + lowerPanel.add(createJButton('Export to
    workspace', {@btExport_Callback, jTreeObj, classNameLabel}, 'Export the selected component handles to workspace variable findjobj_hdls')); + lowerPanel.add(createJButton('Request
    focus', {@btFocus_Callback, jTreeObj, root}, 'Set the focus on the first selected component')); + lowerPanel.add(createJButton('Inspect
    object', {@btInspect_Callback, jTreeObj, root}, 'View the signature of all methods supported by the first selected component')); + lowerPanel.add(createJButton('Check for
    updates', {@btCheckFex_Callback}, 'Check the MathWorks FileExchange for the latest version of FindJObj')); + + % Display everything on-screen + globalPanel = JPanel(BorderLayout); + globalPanel.add(hsplitPane, BorderLayout.CENTER); + globalPanel.add(lowerPanel, BorderLayout.SOUTH); + [obj, hcontainer] = javacomponent(globalPanel, [0,0,pos(3:4)], hTreeFig); + set(hcontainer,'units','normalized'); + drawnow; + hsplitPane.setDividerLocation(hsplitPaneLocation); % this only works after the JSplitPane is displayed... + vsplitPane.setDividerLocation(vsplitPaneLocation); % this only works after the JSplitPane is displayed... + %restoreDbstopError(identifiers); + + % Refresh & resize the screenshot thumbnail +%disable for now, until we get it working... +%{ + try + hAx = axes('Parent',hTreeFig, 'units','pixels', 'position',[10,10,250,150], 'visible','off'); + axis(hAx,'image'); + image(cdata,'Parent',hAx); + axis(hAx,'off'); + set(hAx,'UserData',cdata); + set(imgPanel, 'ComponentResizedCallback',{@resizeImg, hAx}, 'UserData',lowerPanel); + imgPanel.getGraphics.drawImage(jImg, 0, 0, []); + catch + % Never mind... + end +%} + % If all handles were selected (i.e., none were filtered) then only select the first + if (length(selectedIdx) == length(allHandles)) && ~isempty(selectedIdx) + selectedIdx = 1; + end + + % Store handles for callback use + userdata.handles = allHandles; + userdata.levels = allLevels; + userdata.parents = allParents; + userdata.hg_handles = hg_handles; + userdata.hg_levels = hg_levels; + userdata.hg_parents = hg_parentIdx; + userdata.initialIdx = selectedIdx; + userdata.userSelected = false; % Indicates the user has modified the initial selections + userdata.inInit = true; + userdata.jTree = jTreeObj; + userdata.jTreePeer = tree_h; + userdata.vsplitPane = vsplitPane; + userdata.hsplitPane = hsplitPane; + userdata.classNameLabel = classNameLabel; + userdata.inspectorPane = inspectorPane; + userdata.callbacksTable = callbacksTable; + userdata.jideTableUtils = jideTableUtils; + try + userdata.cbHideStdCbs = jcb; + catch + userdata.cbHideStdCbs = []; + end + + % Update userdata for use in callbacks + try + set(tree_h,'userdata',userdata); + catch + setappdata(handle(tree_h),'userdata',userdata); + end + try + set(callbacksTable,'userdata',userdata); + catch + setappdata(callbacksTable,'userdata',userdata); + end + set(hTreeFig,'userdata',userdata); + + % Select the root node if requested + % Note: we must do so here since all other nodes except the root are processed by expandNode + if any(selectedIdx==1) + tree_h.setSelectedNode(root); + end + + % Set the initial cbHideStdCbs state + try + if jcb.isSelected + drawnow; + evd.getSource.isSelected = jcb.isSelected; + cbHideStdCbs_Callback(jcb,evd,callbacksTable); + end + catch + % never mind... + end + + % Set the callback functions + set(tree_hh, 'NodeExpandedCallback', {@nodeExpanded, tree_h}); + set(tree_hh, 'NodeSelectedCallback', {@nodeSelected, tree_h}); + + % Set the tree mouse-click callback + % Note: default actions (expand/collapse) will still be performed? + % Note: MousePressedCallback is better than MouseClickedCallback + % since it fires immediately when mouse button is pressed, + % without waiting for its release, as MouseClickedCallback does + handleTree = tree_h.getScrollPane; + jTreeObj = handleTree.getViewport.getComponent(0); + jTreeObjh = handle(jTreeObj,'CallbackProperties'); + set(jTreeObjh, 'MousePressedCallback', {@treeMousePressedCallback,tree_h}); % context (right-click) menu + set(jTreeObjh, 'MouseMovedCallback', @treeMouseMovedCallback); % mouse hover tooltips + + % Update userdata + userdata.inInit = false; + try + set(tree_h,'userdata',userdata); + catch + setappdata(handle(tree_h),'userdata',userdata); + end + set(hTreeFig,'userdata',userdata); + + % Pre-expand all rows + %treePane.setVisible(false); + expandNode(progressBar, jTreeObj, tree_h, root, 0); + %treePane.setVisible(true); + %jTreeObj.setVisible(1); + + % Hide the progressbar now that we've finished expanding all rows + try + hsplitPane.getLeftComponent.setTopComponent(treePane); + catch + % Probably not a vSplitPane on the left... + hsplitPane.setLeftComponent(treePane); + end + hsplitPane.setDividerLocation(hsplitPaneLocation); % need to do it again... + + % Set keyboard focus on the tree + jTreeObj.requestFocus; + drawnow; + + % Check for a newer version (only in non-deployed mode, and only twice a day) + if ~isdeployed && now-lastVersionCheck > 0.5 + checkVersion(); + lastVersionCheck = now; + end + + % Reset the last error + lasterr(''); %#ok + end + + %% Rresize image pane + function resizeImg(varargin) %#ok - unused (TODO: waiting for img placement fix...) + try + hPanel = varargin{1}; + hAx = varargin{3}; + lowerPanel = get(hPanel,'UserData'); + newJPos = cell2mat(get(hPanel,{'X','Y','Width','Height'})); + newMPos = [1,get(lowerPanel,'Height'),newJPos(3:4)]; + set(hAx, 'units','pixels', 'position',newMPos, 'Visible','on'); + uistack(hAx,'top'); % no good... + set(hPanel,'Opaque','off'); % also no good... + catch + % Never mind... + dispError + end + return; + end + + %% "dbstop if error" causes inspect.m to croak due to a bug - so workaround by temporarily disabling this dbstop + function identifiers = disableDbstopError + dbStat = dbstatus; + idx = find(strcmp({dbStat.cond},'error')); + identifiers = [dbStat(idx).identifier]; + if ~isempty(idx) + dbclear if error; + msgbox('''dbstop if error'' had to be disabled due to a Matlab bug that would have caused Matlab to crash.', 'FindJObj', 'warn'); + end + end + + %% Restore any previous "dbstop if error" + function restoreDbstopError(identifiers) %#ok + for itemIdx = 1 : length(identifiers) + eval(['dbstop if error ' identifiers{itemIdx}]); + end + end + + %% Recursively expand all nodes (except toolbar/menubar) in startup + function expandNode(progressBar, tree, tree_h, parentNode, parentRow) + try + if nargin < 5 + parentPath = javax.swing.tree.TreePath(parentNode.getPath); + parentRow = tree.getRowForPath(parentPath); + end + tree.expandRow(parentRow); + progressBar.setValue(progressBar.getValue+1); + numChildren = parentNode.getChildCount; + if (numChildren == 0) + pause(0.0002); % as short as possible... + drawnow; + end + nodesToUnExpand = {'FigureMenuBar','MLMenuBar','MJToolBar','Box','uimenu','uitoolbar','ScrollBar'}; + numChildren = parentNode.getChildCount; + for childIdx = 0 : numChildren-1 + childNode = parentNode.getChildAt(childIdx); + + % Pre-select the node based upon the user's FINDJOBJ filters + try + nodedata = get(childNode, 'userdata'); + try + userdata = get(tree_h, 'userdata'); + catch + userdata = getappdata(handle(tree_h), 'userdata'); + end + %fprintf('%d - %s\n',nodedata.idx,char(nodedata.obj)) + if ~ishghandle(nodedata.obj) && ~userdata.userSelected && any(userdata.initialIdx == nodedata.idx) + pause(0.0002); % as short as possible... + drawnow; + if isempty(tree_h.getSelectedNodes) + tree_h.setSelectedNode(childNode); + else + newSelectedNodes = [tree_h.getSelectedNodes, childNode]; + tree_h.setSelectedNodes(newSelectedNodes); + end + end + catch + % never mind... + dispError + end + + % Expand child node if not leaf & not toolbar/menubar + if childNode.isLeafNode + + % This is a leaf node, so simply update the progress-bar + progressBar.setValue(progressBar.getValue+1); + + else + % Expand all non-leaves + expandNode(progressBar, tree, tree_h, childNode); + + % Re-collapse toolbar/menubar etc., and also invisible containers + % Note: if we simply did nothing, progressbar would not have been updated... + try + childHandle = getappdata(childNode,'childHandle'); %=childNode.getUserObject + visible = childHandle.isVisible; + catch + visible = 1; + end + visible = visible && isempty(findstr(get(childNode,'Name'),'color="gray"')); + %if any(strcmp(childNode.getName,nodesToUnExpand)) + %name = char(childNode.getName); + if any(cellfun(@(s)~isempty(strmatch(s,char(childNode.getName))),nodesToUnExpand)) || ~visible + childPath = javax.swing.tree.TreePath(childNode.getPath); + childRow = tree.getRowForPath(childPath); + tree.collapseRow(childRow); + end + end + end + catch + % never mind... + dispError + end + end + + %% Create utility buttons + function hButton = createJButton(nameStr, handler, toolTipText) + try + jButton = javax.swing.JButton(['
    ' nameStr]); + jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); + jButton.setToolTipText(toolTipText); + try + minSize = jButton.getMinimumSize; + catch + minSize = jButton.getMinimumSize; % for HG2 - strange indeed that this is needed! + end + jButton.setMinimumSize(java.awt.Dimension(minSize.getWidth,35)); + hButton = handle(jButton,'CallbackProperties'); + set(hButton,'ActionPerformedCallback',handler); + catch + % Never mind... + a= 1; + end + end + + %% Flash a component off/on for the specified duration + % note: starts with 'on'; if numTimes is odd then ends with 'on', otherwise with 'off' + function flashComponent(jComps,delaySecs,numTimes) + persistent redBorder redBorderPanels + try + % Handle callback data from right-click (context-menu) + if iscell(numTimes) + [jComps,delaySecs,numTimes] = deal(numTimes{:}); + end + + if isempty(redBorder) % reuse if possible + redBorder = javax.swing.border.LineBorder(java.awt.Color.red,2,0); + end + for compIdx = 1 : length(jComps) + try + oldBorder{compIdx} = jComps(compIdx).getBorder; %#ok grow + catch + oldBorder{compIdx} = []; %#ok grow + end + isSettable(compIdx) = ismethod(jComps(compIdx),'setBorder'); %#ok grow + if isSettable(compIdx) + try + % some components prevent border modification: + oldBorderFlag = jComps(compIdx).isBorderPainted; + if ~oldBorderFlag + jComps(compIdx).setBorderPainted(1); + isSettable(compIdx) = jComps(compIdx).isBorderPainted; %#ok grow + jComps(compIdx).setBorderPainted(oldBorderFlag); + end + catch + % do nothing... + end + end + if compIdx > length(redBorderPanels) + redBorderPanels{compIdx} = javax.swing.JPanel; + redBorderPanels{compIdx}.setBorder(redBorder); + redBorderPanels{compIdx}.setOpaque(0); % transparent interior, red border + end + try + redBorderPanels{compIdx}.setBounds(jComps(compIdx).getBounds); + catch + % never mind - might be an HG handle + end + end + for idx = 1 : 2*numTimes + if idx>1, pause(delaySecs); end % don't pause at start + visible = mod(idx,2); + for compIdx = 1 : length(jComps) + try + jComp = jComps(compIdx); + + % Prevent Matlab crash (java buffer overflow...) + if isa(jComp,'com.mathworks.mwswing.desk.DTSplitPane') || ... + isa(jComp,'com.mathworks.mwswing.MJSplitPane') + continue; + + % HG handles are highlighted by setting their 'Selected' property + elseif isa(jComp,'uimenu') || isa(jComp,'matlab.ui.container.Menu') + if visible + oldColor = get(jComp,'ForegroundColor'); + setappdata(jComp,'findjobj_oldColor',oldColor); + set(jComp,'ForegroundColor','red'); + else + oldColor = getappdata(jComp,'findjobj_oldColor'); + set(jComp,'ForegroundColor',oldColor); + rmappdata(jComp,'ForegroundColor'); + end + + elseif ishghandle(jComp) + if visible + set(jComp,'Selected','on'); + else + set(jComp,'Selected','off'); + end + + else %if isjava(jComp) + + jParent = jComps(compIdx).getParent; + + % Most Java components allow modifying their borders + if isSettable(compIdx) + if visible + jComp.setBorder(redBorder); + try jComp.setBorderPainted(1); catch, end %#ok + else %if ~isempty(oldBorder{compIdx}) + jComp.setBorder(oldBorder{compIdx}); + end + jComp.repaint; + + % The other Java components are highlighted by a transparent red-border + % panel that is placed on top of them in their parent's space + elseif ~isempty(jParent) + if visible + jParent.add(redBorderPanels{compIdx}); + jParent.setComponentZOrder(redBorderPanels{compIdx},0); + else + jParent.remove(redBorderPanels{compIdx}); + end + jParent.repaint + end + end + catch + % never mind - try the next component (if any) + end + end + drawnow; + end + catch + % never mind... + dispError; + end + return; % debug point + end % flashComponent + + %% Select tree node + function nodeSelected(src, evd, tree) %#ok + try + if iscell(tree) + [src,node] = deal(tree{:}); + else + node = evd.getCurrentNode; + end + %nodeHandle = node.getUserObject; + nodedata = get(node,'userdata'); + nodeHandle = nodedata.obj; + try + userdata = get(src,'userdata'); + catch + try + userdata = getappdata(java(src),'userdata'); + catch + userdata = getappdata(src,'userdata'); + end + if isempty(userdata) + try userdata = get(java(src),'userdata'); catch, end + end + end + if ~isempty(nodeHandle) && ~isempty(userdata) + numSelections = userdata.jTree.getSelectionCount; + selectionPaths = userdata.jTree.getSelectionPaths; + if (numSelections == 1) + % Indicate that the user has modified the initial selection (except if this was an initial auto-selected node) + if ~userdata.inInit + userdata.userSelected = true; + try + set(src,'userdata',userdata); + catch + try + setappdata(java(src),'userdata',userdata); + catch + setappdata(src,'userdata',userdata); + end + end + end + + % Update the fully-qualified class name label + numInitialIdx = length(userdata.initialIdx); + thisHandle = nodeHandle; + try + if ~ishghandle(thisHandle) + thisHandle = java(nodeHandle); + end + catch + % never mind... + end + if ~userdata.inInit || (numInitialIdx == 1) + userdata.classNameLabel.setText([' ' char(class(thisHandle))]); + else + userdata.classNameLabel.setText([' ' num2str(numInitialIdx) 'x handles (some handles hidden by unexpanded tree nodes)']); + end + if ishghandle(thisHandle) + userdata.classNameLabel.setText(userdata.classNameLabel.getText.concat(' (HG handle)')); + end + userdata.inspectorPane.dispose; % remove props listeners - doesn't work... + updateNodeTooltip(nodeHandle, userdata.classNameLabel); + + % Update the data properties inspector pane + % Note: we can't simply use the evd nodeHandle, because this node might have been DE-selected with only one other node left selected... + %nodeHandle = selectionPaths(1).getLastPathComponent.getUserObject; + nodedata = get(selectionPaths(1).getLastPathComponent,'userdata'); + nodeHandle = nodedata.obj; + %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround + userdata.inspectorPane.setObject(thisHandle); + + % Update the callbacks table + try + stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs'); + [cbData, cbHeaders, cbTableEnabled] = getCbsData(nodeHandle, stripStdCbsFlag); %#ok cbTableEnabled unused + try + % Use JideTable if available on this system + list = getTreeData(cbData); %#ok + callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Expand if only one category + if length(callbacksTableModel.getCategories)==1 + callbacksTableModel.expandFirstLevel; + end + catch + callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); + end + set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,nodeHandle,userdata.callbacksTable}); + %set(callbacksTableModel, 'UserData',nodeHandle); + userdata.callbacksTable.setModel(callbacksTableModel) + userdata.callbacksTable.setRowAutoResizes(true); + userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable); + catch + % never mind... + %dispError + end + pause(0.005); + drawnow; + %restoreDbstopError(identifiers); + + % Highlight the selected object (if visible) + flashComponent(nodeHandle,0.2,3); + + elseif (numSelections > 1) % Multiple selections + + % Get the list of all selected nodes + jArray = javaArray('java.lang.Object', numSelections); + toolTipStr = ''; + sameClassFlag = true; + for idx = 1 : numSelections + %jArray(idx) = selectionPaths(idx).getLastPathComponent.getUserObject; + nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata'); + try + if ishghandle(nodedata.obj) + if idx==1 + jArray = nodedata.obj; + else + jArray(idx) = nodedata.obj; + end + else + jArray(idx) = java(nodedata.obj); + end + catch + jArray(idx) = nodedata.obj; + end + toolTipStr = [toolTipStr ' ' class(jArray(idx)) ' ']; %#ok grow + if (idx < numSelections), toolTipStr = [toolTipStr '
    ']; end %#ok grow + try + if (idx > 1) && sameClassFlag && ~isequal(jArray(idx).getClass,jArray(1).getClass) + sameClassFlag = false; + end + catch + if (idx > 1) && sameClassFlag && ~isequal(class(jArray(idx)),class(jArray(1))) + sameClassFlag = false; + end + end + end + toolTipStr = [toolTipStr '']; + + % Update the fully-qualified class name label + if sameClassFlag + classNameStr = class(jArray(1)); + else + classNameStr = 'handle'; + end + if all(ishghandle(jArray)) + if strcmp(classNameStr,'handle') + classNameStr = 'HG handles'; + else + classNameStr = [classNameStr ' (HG handles)']; + end + end + classNameStr = [' ' num2str(numSelections) 'x ' classNameStr]; + userdata.classNameLabel.setText(classNameStr); + userdata.classNameLabel.setToolTipText(toolTipStr); + + % Update the data properties inspector pane + %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround + if isjava(jArray) + jjArray = jArray; + else + jjArray = javaArray('java.lang.Object', numSelections); + for idx = 1 : numSelections + jjArray(idx) = java(jArray(idx)); + end + end + userdata.inspectorPane.getRegistry.setSelected(jjArray, true); + + % Update the callbacks table + try + % Get intersecting callback names & values + stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs'); + [cbData, cbHeaders, cbTableEnabled] = getCbsData(jArray(1), stripStdCbsFlag); %#ok cbHeaders & cbTableEnabled unused + if ~isempty(cbData) + cbNames = cbData(:,1); + for idx = 2 : length(jArray) + [cbData2, cbHeaders2] = getCbsData(jArray(idx), stripStdCbsFlag); %#ok cbHeaders2 unused + if ~isempty(cbData2) + newCbNames = cbData2(:,1); + [cbNames, cbIdx, cb2Idx] = intersect(cbNames,newCbNames); %#ok cb2Idx unused + cbData = cbData(cbIdx,:); + for cbIdx = 1 : length(cbNames) + newIdx = find(strcmp(cbNames{cbIdx},newCbNames)); + if ~isequal(cbData2,cbData) && ~isequal(cbData2{newIdx,2}, cbData{cbIdx,2}) + cbData{cbIdx,2} = ''; + end + end + else + cbData = cbData([],:); %=empty cell array + end + if isempty(cbData) + break; + end + end + end + cbHeaders = {'Callback name','Callback value'}; + try + % Use JideTable if available on this system + list = getTreeData(cbData); %#ok + callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation + + % Expand if only one category + if length(callbacksTableModel.getCategories)==1 + callbacksTableModel.expandFirstLevel; + end + catch + callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); + end + set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,jArray,userdata.callbacksTable}); + %set(callbacksTableModel, 'UserData',jArray); + userdata.callbacksTable.setModel(callbacksTableModel) + userdata.callbacksTable.setRowAutoResizes(true); + userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable); + catch + % never mind... + dispError + end + + pause(0.005); + drawnow; + %restoreDbstopError(identifiers); + + % Highlight the selected objects (if visible) + flashComponent(jArray,0.2,3); + end + + % TODO: Auto-highlight selected object (?) + %nodeHandle.requestFocus; + end + catch + dispError + end + end + + %% IFF utility function for annonymous cellfun funcs + function result = iff(test,trueVal,falseVal) %#ok + try + if test + result = trueVal; + else + result = falseVal; + end + catch + result = false; + end + end + + %% Get an HTML representation of the object's properties + function dataFieldsStr = getPropsHtml(nodeHandle, dataFields) + try + % Get a text representation of the fieldnames & values + undefinedStr = ''; + hiddenStr = ''; + dataFieldsStr = ''; % just in case the following croaks... + if isempty(dataFields) + return; + end + dataFieldsStr = evalc('disp(dataFields)'); + if dataFieldsStr(end)==char(10), dataFieldsStr=dataFieldsStr(1:end-1); end + + % Strip out callbacks + dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*Callback(Data)?:[^\n]*$','','lineanchors'); + + % Strip out internal HG2 mirror properties + dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*_I:[^\n]*$','','lineanchors'); + dataFieldsStr = regexprep(dataFieldsStr,'\n\n+','\n'); + + % Sort the fieldnames + %fieldNames = fieldnames(dataFields); + try + [a,b,c,d] = regexp(dataFieldsStr,'(\w*): '); + fieldNames = strrep(d,': ',''); + catch + fieldNames = fieldnames(dataFields); + end + try + [fieldNames, sortedIdx] = sort(fieldNames); + s = strsplit(dataFieldsStr, sprintf('\n'))'; + dataFieldsStr = strjoin(s(sortedIdx), sprintf('\n')); + catch + % never mind... - ignore, leave unsorted + end + + % Convert into a Matlab handle() + %nodeHandle = handle(nodeHandle); + try + % ensure this is a Matlab handle, not a java object + nodeHandle = handle(nodeHandle, 'CallbackProperties'); + catch + try + % HG handles don't allow CallbackProperties... + nodeHandle = handle(nodeHandle); + catch + % Some Matlab class objects simply cannot be converted into a handle() + end + end + + % HTMLize tooltip data + % First, set the fields' font based on its read-write status + for fieldIdx = 1 : length(fieldNames) + thisFieldName = fieldNames{fieldIdx}; + %accessFlags = get(findprop(nodeHandle,thisFieldName),'AccessFlags'); + try + hProp = findprop(nodeHandle,thisFieldName); + accessFlags = get(hProp,'AccessFlags'); + visible = get(hProp,'Visible'); + catch + accessFlags = []; + visible = 'on'; + try if hProp.Hidden, visible='off'; end, catch, end + end + %if isfield(accessFlags,'PublicSet') && strcmp(accessFlags.PublicSet,'on') + if (~isempty(hProp) && isprop(hProp,'SetAccess') && isequal(hProp.SetAccess,'public')) || ... % isequal(...'public') and not strcmpi(...) because might be a cell array of classes + (~isempty(accessFlags) && isfield(accessFlags,'PublicSet') && strcmpi(accessFlags.PublicSet,'on')) + % Bolden read/write fields + thisFieldFormat = ['' thisFieldName ':$2']; + %elseif ~isfield(accessFlags,'PublicSet') + elseif (isempty(hProp) || ~isprop(hProp,'SetAccess')) && ... + (isempty(accessFlags) || ~isfield(accessFlags,'PublicSet')) + % Undefined - probably a Matlab-defined field of com.mathworks.hg.peer.FigureFrameProxy... + thisFieldFormat = ['' thisFieldName ':$2']; + undefinedStr = ', undefined'; + else % PublicSet=='off' + % Gray-out & italicize any read-only fields + thisFieldFormat = ['' thisFieldName ':$2']; + end + if strcmpi(visible,'off') + %thisFieldFormat = ['' thisFieldFormat '']; %#ok + thisFieldFormat = regexprep(thisFieldFormat, {'(.*):(.*)','<.?b>'}, {'$1:$2',''}); %'(.*):(.*)', '$1:$2'); + hiddenStr = ', hidden'; + end + dataFieldsStr = regexprep(dataFieldsStr, ['([\s\n])' thisFieldName ':([^\n]*)'], ['$1' thisFieldFormat]); + end + catch + % never mind... - probably an ambiguous property name + %dispError + end + + % Method 1: simple
    list + %dataFieldsStr = strrep(dataFieldsStr,char(10),' 
      '); + + % Method 2: 2-column + dataFieldsStr = regexprep(dataFieldsStr, '^\s*([^:]+:)([^\n]*)\n^\s*([^:]+:)([^\n]*)$', '', 'lineanchors'); + dataFieldsStr = regexprep(dataFieldsStr, '^[^<]\s*([^:]+:)([^\n]*)$', '', 'lineanchors'); + dataFieldsStr = ['(documented' undefinedStr hiddenStr ' & read-only fields)

      

     $1 $2    $3 $4 
     $1 $2  
    ' dataFieldsStr '
    ']; + end + + %% Update tooltip string with a node's data + function updateNodeTooltip(nodeHandle, uiObject) + try + toolTipStr = class(nodeHandle); + dataFieldsStr = ''; + + % Add HG annotation if relevant + if ishghandle(nodeHandle) + hgStr = ' HG Handle'; + else + hgStr = ''; + end + + % Prevent HG-Java warnings + oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty'); + warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty'); + warning('off','MATLAB:hg:Root'); + + % Note: don't bulk-get because (1) not all properties are returned & (2) some properties cause a Java exception + % Note2: the classhandle approach does not enable access to user-defined schema.props + ch = classhandle(handle(nodeHandle)); + dataFields = []; + [sortedNames, sortedIdx] = sort(get(ch.Properties,'Name')); + for idx = 1 : length(sortedIdx) + sp = ch.Properties(sortedIdx(idx)); + % TODO: some fields (see EOL comment below) generate a Java Exception from: com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run + if strcmp(sp.AccessFlags.PublicGet,'on') % && ~any(strcmp(sp.Name,{'FixedColors','ListboxTop','Extent'})) + try + dataFields.(sp.Name) = get(nodeHandle, sp.Name); + catch + dataFields.(sp.Name) = 'Error!'; + end + else + dataFields.(sp.Name) = '(no public getter method)'; + end + end + dataFieldsStr = getPropsHtml(nodeHandle, dataFields); + catch + % Probably a non-HG java object + try + % Note: the bulk-get approach enables access to user-defined schema-props, but not to some original classhandle Properties... + try + oldWarn3 = warning('off','MATLAB:structOnObject'); + dataFields = struct(nodeHandle); + warning(oldWarn3); + catch + dataFields = get(nodeHandle); + end + dataFieldsStr = getPropsHtml(nodeHandle, dataFields); + catch + % Probably a missing property getter implementation + try + % Inform the user - bail out on error + err = lasterror; %#ok + dataFieldsStr = ['

    ' strrep(err.message, char(10), '
    ')]; + catch + % forget it... + end + end + end + + % Restore warnings + try warning(oldWarn); catch, end + + % Set the object tooltip + if ~isempty(dataFieldsStr) + toolTipStr = [' ' char(toolTipStr) '' hgStr ': ' dataFieldsStr '']; + end + uiObject.setToolTipText(toolTipStr); + end + + %% Expand tree node + function nodeExpanded(src, evd, tree) %#ok + % tree = handle(src); + % evdsrc = evd.getSource; + evdnode = evd.getCurrentNode; + + if ~tree.isLoaded(evdnode) + + % Get the list of children TreeNodes + childnodes = getChildrenNodes(tree, evdnode); + + % Add the HG sub-tree (unless already included in the first tree) + childHandle = getappdata(evdnode.handle,'childHandle'); %=evdnode.getUserObject + if evdnode.isRoot && ~isempty(hg_handles) && ~isequal(hg_handles(1).java, childHandle) + childnodes = [childnodes, getChildrenNodes(tree, evdnode, true)]; + end + + % If we have a single child handle, wrap it within a javaArray for tree.add() to "swallow" + if (length(childnodes) == 1) + chnodes = childnodes; + childnodes = javaArray('com.mathworks.hg.peer.UITreeNode', 1); + childnodes(1) = java(chnodes); + end + + % Add child nodes to the current node + tree.add(evdnode, childnodes); + tree.setLoaded(evdnode, true); + end + end + + %% Get an icon image no larger than 16x16 pixels + function iconImage = setIconSize(iconImage) + try + iconWidth = iconImage.getWidth; + iconHeight = iconImage.getHeight; + if iconWidth > 16 + newHeight = fix(iconHeight * 16 / iconWidth); + iconImage = iconImage.getScaledInstance(16,newHeight,iconImage.SCALE_SMOOTH); + elseif iconHeight > 16 + newWidth = fix(iconWidth * 16 / iconHeight); + iconImage = iconImage.getScaledInstance(newWidth,16,iconImage.SCALE_SMOOTH); + end + catch + % never mind... - return original icon + end + end % setIconSize + + %% Get list of children nodes + function nodes = getChildrenNodes(tree, parentNode, isRootHGNode) + try + iconpath = [matlabroot, '/toolbox/matlab/icons/']; + nodes = handle([]); + try + userdata = get(tree,'userdata'); + catch + userdata = getappdata(handle(tree),'userdata'); + end + hdls = userdata.handles; + nodedata = get(parentNode,'userdata'); + if nargin < 3 + %isJavaNode = ~ishghandle(parentNode.getUserObject); + isJavaNode = ~ishghandle(nodedata.obj); + isRootHGNode = false; + else + isJavaNode = ~isRootHGNode; + end + + % Search for this parent node in the list of all nodes + parents = userdata.parents; + nodeIdx = nodedata.idx; + + if isJavaNode && isempty(nodeIdx) % Failback, in case userdata doesn't work for some reason... + for hIdx = 1 : length(hdls) + %if isequal(handle(parentNode.getUserObject), hdls(hIdx)) + if isequal(handle(nodedata.obj), hdls(hIdx)) + nodeIdx = hIdx; + break; + end + end + end + if ~isJavaNode + if isRootHGNode % =root HG node + thisChildHandle = userdata.hg_handles(1); + childName = getNodeName(thisChildHandle); + hasGrandChildren = any(parents==1); + icon = []; + if hasGrandChildren && length(hg_handles)>1 + childName = childName.concat(' - HG root container'); + icon = [iconpath 'figureicon.gif']; + end + try + nodes = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren); + catch % old matlab version don't have the 'v0' option + try + nodes = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren); + catch + % probably an invalid handle - ignore... + end + end + + % Add the handler to the node's internal data + % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes + % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata + %nodes.setUserObject(thisChildHandle); + setappdata(nodes,'childHandle',thisChildHandle); + nodedata.idx = 1; + nodedata.obj = thisChildHandle; + set(nodes,'userdata',nodedata); + return; + else % non-root HG node + parents = userdata.hg_parents; + hdls = userdata.hg_handles; + end % if isRootHGNode + end % if ~isJavaNode + + % If this node was found, get the list of its children + if ~isempty(nodeIdx) + %childIdx = setdiff(find(parents==nodeIdx),nodeIdx); + childIdx = find(parents==nodeIdx); + childIdx(childIdx==nodeIdx) = []; % faster... + numChildren = length(childIdx); + for cIdx = 1 : numChildren + thisChildIdx = childIdx(cIdx); + try thisChildHandle = hdls(thisChildIdx); catch, continue, end + childName = getNodeName(thisChildHandle); + try + visible = thisChildHandle.Visible; + if visible + try visible = thisChildHandle.Width > 0; catch, end %#ok + end + if ~visible + childName = ['' char(childName) '']; %#ok grow + end + catch + % never mind... + end + hasGrandChildren = any(parents==thisChildIdx); + try + isaLabel = isa(thisChildHandle.java,'javax.swing.JLabel'); + catch + isaLabel = 0; + end + if hasGrandChildren && ~any(strcmp(class(thisChildHandle),{'axes'})) + icon = [iconpath 'foldericon.gif']; + elseif isaLabel + icon = [iconpath 'tool_text.gif']; + else + icon = []; + end + try + nodes(cIdx) = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren); + catch % old matlab version don't have the 'v0' option + try + nodes(cIdx) = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren); + catch + % probably an invalid handle - ignore... + end + end + + % Use existing object icon, if available + try + setTreeNodeIcon(nodes(cIdx),thisChildHandle); + catch + % probably an invalid handle - ignore... + end + + % Pre-select the node based upon the user's FINDJOBJ filters + try + if isJavaNode && ~userdata.userSelected && any(userdata.initialIdx == thisChildIdx) + pause(0.0002); % as short as possible... + drawnow; + if isempty(tree.getSelectedNodes) + tree.setSelectedNode(nodes(cIdx)); + else + newSelectedNodes = [tree.getSelectedNodes, nodes(cIdx).java]; + tree.setSelectedNodes(newSelectedNodes); + end + end + catch + % never mind... + end + + % Add the handler to the node's internal data + % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes + % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata + % Note3: the following will error if invalid handle - ignore + try + if isJavaNode + thisChildHandle = thisChildHandle.java; + end + %nodes(cIdx).setUserObject(thisChildHandle); + setappdata(nodes(cIdx),'childHandle',thisChildHandle); + nodedata.idx = thisChildIdx; + nodedata.obj = thisChildHandle; + set(nodes(cIdx),'userdata',nodedata); + catch + % never mind (probably an invalid handle) - leave unchanged (like a leaf) + end + end + end + catch + % Never mind - leave unchanged (like a leaf) + %error('YMA:findjobj:UnknownNodeType', 'Error expanding component tree node'); + dispError + end + end + + %% Get a node's name + function [nodeName, nodeTitle] = getNodeName(hndl,charsLimit) + try + % Initialize (just in case one of the succeding lines croaks) + nodeName = ''; + nodeTitle = ''; + if ~ismethod(hndl,'getClass') + try + nodeName = class(hndl); + catch + nodeName = hndl.type; % last-ditch try... + end + else + nodeName = hndl.getClass.getSimpleName; + end + + % Strip away the package name, leaving only the regular classname + if ~isempty(nodeName) && ischar(nodeName) + nodeName = java.lang.String(nodeName); + nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1); + end + if (nodeName.length == 0) + % fix case of anonymous internal classes, that do not have SimpleNames + try + nodeName = hndl.getClass.getName; + nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1); + catch + % never mind - leave unchanged... + end + end + + % Get any unique identifying string (if available in one of several fields) + labelsToCheck = {'label','title','text','string','displayname','toolTipText','TooltipString','actionCommand','name','Tag','style'}; %,'UIClassID'}; + nodeTitle = ''; + strField = ''; %#ok - used for debugging + while ((~isa(nodeTitle,'java.lang.String') && ~ischar(nodeTitle)) || isempty(nodeTitle)) && ~isempty(labelsToCheck) + try + nodeTitle = get(hndl,labelsToCheck{1}); + strField = labelsToCheck{1}; %#ok - used for debugging + catch + % never mind - probably missing prop, so skip to next one + end + labelsToCheck(1) = []; + end + if length(nodeTitle) ~= numel(nodeTitle) + % Multi-line - convert to a long single line + nodeTitle = nodeTitle'; + nodeTitle = nodeTitle(:)'; + end + if isempty(char(nodeTitle)) + % No title - check whether this is an HG label whose text is gettable + try + location = hndl.getLocationOnScreen; + pos = [location.getX, location.getY, hndl.getWidth, hndl.getHeight]; + %dist = sum((labelPositions-repmat(pos,size(labelPositions,1),[1,1,1,1])).^2, 2); + dist = sum((labelPositions-repmat(pos,[size(labelPositions,1),1])).^2, 2); + [minVal,minIdx] = min(dist); + % Allow max distance of 8 = 2^2+2^2 (i.e. X&Y off by up to 2 pixels, W&H exact) + if minVal <= 8 % 8=2^2+2^2 + nodeTitle = get(hg_labels(minIdx),'string'); + % Preserve the label handles & position for the tooltip & context-menu + %hg_labels(minIdx) = []; + %labelPositions(minIdx,:) = []; + end + catch + % never mind... + end + end + if nargin<2, charsLimit = 25; end + extraStr = regexprep(nodeTitle,{sprintf('(.{%d,%d}).*',charsLimit,min(charsLimit,length(nodeTitle)-1)),' +'},{'$1...',' '},'once'); + if ~isempty(extraStr) + if ischar(extraStr) + nodeName = nodeName.concat(' (''').concat(extraStr).concat(''')'); + else + nodeName = nodeName.concat(' (').concat(num2str(extraStr)).concat(')'); + end + %nodeName = nodeName.concat(strField); + end + catch + % Never mind - use whatever we have so far + %dispError + end + end + + %% Strip standard Swing callbacks from a list of events + function evNames = stripStdCbs(evNames) + try + stdEvents = {'AncestorAdded', 'AncestorMoved', 'AncestorRemoved', 'AncestorResized', ... + 'ComponentAdded', 'ComponentRemoved', 'ComponentHidden', ... + 'ComponentMoved', 'ComponentResized', 'ComponentShown', ... + 'FocusGained', 'FocusLost', 'HierarchyChanged', ... + 'KeyPressed', 'KeyReleased', 'KeyTyped', ... + 'MouseClicked', 'MouseDragged', 'MouseEntered', 'MouseExited', ... + 'MouseMoved', 'MousePressed', 'MouseReleased', 'MouseWheelMoved', ... + 'PropertyChange', 'VetoableChange', ... + 'CaretPositionChanged', 'InputMethodTextChanged', ... + 'ButtonDown', 'Create', 'Delete'}; + stdEvents = [stdEvents, strcat(stdEvents,'Callback'), strcat(stdEvents,'Fcn')]; + evNames = setdiff(evNames,stdEvents)'; + catch + % Never mind... + dispError + end + end + + %% Callback function for checkbox + function cbHideStdCbs_Callback(src, evd, callbacksTable, varargin) %#ok + try + % Store the current checkbox value for later use + if nargin < 3 + try + callbacksTable = get(src,'userdata'); + catch + callbacksTable = getappdata(src,'userdata'); + end + end + if evd.getSource.isSelected + setappdata(callbacksTable,'hideStdCbs',1); + else + setappdata(callbacksTable,'hideStdCbs',[]); + end + + % Rescan the current node + try + userdata = get(callbacksTable,'userdata'); + catch + userdata = getappdata(callbacksTable,'userdata'); + end + nodepath = userdata.jTree.getSelectionModel.getSelectionPath; + try + ed.getCurrentNode = nodepath.getLastPathComponent; + nodeSelected(handle(userdata.jTreePeer),ed,[]); + catch + % ignore - probably no node selected + end + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btWebsite_Callback(src, evd, varargin) %#ok + try + web('http://UndocumentedMatlab.com','-browser'); + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btRefresh_Callback(src, evd, varargin) %#ok + try + % Set cursor shape to hourglass until we're done + hTreeFig = varargin{2}; + set(hTreeFig,'Pointer','watch'); + drawnow; + object = varargin{1}; + + % Re-invoke this utility to re-scan the container for all children + findjobj(object); + catch + % Never mind... + end + + % Restore default cursor shape + set(hTreeFig,'Pointer','arrow'); + end + + %% Callback function for button + function btExport_Callback(src, evd, varargin) %#ok + try + % Get the list of all selected nodes + if length(varargin) > 1 + jTree = varargin{1}; + numSelections = jTree.getSelectionCount; + selectionPaths = jTree.getSelectionPaths; + hdls = handle([]); + for idx = 1 : numSelections + %hdls(idx) = handle(selectionPaths(idx).getLastPathComponent.getUserObject); + nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata'); + try + hdls(idx) = handle(nodedata.obj,'CallbackProperties'); + catch + if idx==1 % probably due to HG2: can't convert object to handle([]) + hdls = nodedata.obj; + else + hdls(idx) = nodedata.obj; + end + end + end + + % Assign the handles in the base workspace & inform user + assignin('base','findjobj_hdls',hdls); + classNameLabel = varargin{2}; + msg = ['Exported ' char(classNameLabel.getText.trim) ' to base workspace variable findjobj_hdls']; + else + % Right-click (context-menu) callback + data = varargin{1}; + obj = data{1}; + varName = data{2}; + if isempty(varName) + varName = inputdlg('Enter workspace variable name','FindJObj'); + if isempty(varName), return; end % bail out on + varName = varName{1}; + if isempty(varName) || ~ischar(varName), return; end % bail out on empty/null + varName = genvarname(varName); + end + assignin('base',varName,handle(obj,'CallbackProperties')); + msg = ['Exported object to base workspace variable ' varName]; + end + msgbox(msg,'FindJObj','help'); + catch + % Never mind... + dispError + end + end + + %% Callback function for button + function btFocus_Callback(src, evd, varargin) %#ok + try + % Request focus for the specified object + object = getTopSelectedObject(varargin{:}); + object.requestFocus; + catch + try + object = object.java.getPeer.requestFocus; + object.requestFocus; + catch + % Never mind... + %dispError + end + end + end + + %% Callback function for button + function btInspect_Callback(src, evd, varargin) %#ok + try + % Inspect the specified object + if length(varargin) == 1 + object = varargin{1}; + else + object = getTopSelectedObject(varargin{:}); + end + if isempty(which('uiinspect')) + + % If the user has not indicated NOT to be informed about UIInspect + if ~ispref('FindJObj','dontCheckUIInspect') + + % Ask the user whether to download UIINSPECT (YES, no, no & don't ask again) + answer = questdlg({'The object inspector requires UIINSPECT from the MathWorks File Exchange. UIINSPECT was created by Yair Altman, like this FindJObj utility.','','Download & install UIINSPECT?'},'UIInspect','Yes','No','No & never ask again','Yes'); + switch answer + case 'Yes' % => Yes: download & install + try + % Download UIINSPECT + baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/17935'; + fileUrl = [baseUrl '?controller=file_infos&download=true']; + %file = urlread(fileUrl); + %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL + + % Install... + %newPath = fullfile(fileparts(which(mfilename)),'uiinspect.m'); + %fid = fopen(newPath,'wt'); + %fprintf(fid,'%s',file); + %fclose(fid); + [fpath,fname,fext] = fileparts(which(mfilename)); + zipFileName = fullfile(fpath,'uiinspect.zip'); + urlwrite(fileUrl,zipFileName); + unzip(zipFileName,fpath); + rehash; + catch + % Error downloading: inform the user + msgbox(['Error in downloading: ' lasterr], 'UIInspect', 'warn'); %#ok + web(baseUrl); + end + + % ...and now run it... + %pause(0.1); + drawnow; + dummy = which('uiinspect'); %#ok used only to load into memory + uiinspect(object); + return; + + case 'No & never ask again' % => No & don't ask again + setpref('FindJObj','dontCheckUIInspect',1); + + otherwise + % forget it... + end + end + drawnow; + + % No UIINSPECT available - run the good-ol' METHODSVIEW()... + methodsview(object); + else + uiinspect(object); + end + catch + try + if isjava(object) + methodsview(object) + else + methodsview(object.java); + end + catch + % Never mind... + dispError + end + end + end + + %% Callback function for button + function btCheckFex_Callback(src, evd, varargin) %#ok + try + % Check the FileExchange for the latest version + web('http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317'); + catch + % Never mind... + dispError + end + end + + %% Check for existence of a newer version + function checkVersion() + try + % If the user has not indicated NOT to be informed + if ~ispref('FindJObj','dontCheckNewerVersion') + + % Get the latest version date from the File Exchange webpage + baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/'; + webUrl = [baseUrl '14317']; % 'loadFile.do?objectId=14317']; + webPage = urlread(webUrl); + modIdx = strfind(webPage,'>Updates<'); + if ~isempty(modIdx) + webPage = webPage(modIdx:end); + % Note: regexp hangs if substr not found, so use strfind instead... + %latestWebVersion = regexprep(webPage,'.*?>(20[\d-]+).*','$1'); + dateIdx = strfind(webPage,'class="date">'); + if ~isempty(dateIdx) + latestDate = webPage(dateIdx(end)+13 : dateIdx(end)+23); + try + startIdx = dateIdx(end)+27; + descStartIdx = startIdx + strfind(webPage(startIdx:startIdx+999),''); + descEndIdx = startIdx + strfind(webPage(startIdx:startIdx+999),''); + descStr = webPage(descStartIdx(1)+3 : descEndIdx(1)-2); + descStr = regexprep(descStr,'',''); + catch + descStr = ''; + end + + % Get this file's latest date + thisFileName = which(mfilename); %#ok + try + thisFileData = dir(thisFileName); + try + thisFileDatenum = thisFileData.datenum; + catch % old ML versions... + thisFileDatenum = datenum(thisFileData.date); + end + catch + thisFileText = evalc('type(thisFileName)'); + thisFileLatestDate = regexprep(thisFileText,'.*Change log:[\s%]+([\d-]+).*','$1'); + thisFileDatenum = datenum(thisFileLatestDate,'yyyy-mm-dd'); + end + + % If there's a newer version on the File Exchange webpage (allow 2 days grace period) + if (thisFileDatenum < datenum(latestDate,'dd mmm yyyy')-2) + + % Ask the user whether to download the newer version (YES, no, no & don't ask again) + msg = {['A newer version (' latestDate ') of FindJObj is available on the MathWorks File Exchange:'], '', ... + ['\color{blue}' descStr '\color{black}'], '', ... + 'Download & install the new version?'}; + createStruct.Interpreter = 'tex'; + createStruct.Default = 'Yes'; + answer = questdlg(msg,'FindJObj','Yes','No','No & never ask again',createStruct); + switch answer + case 'Yes' % => Yes: download & install newer file + try + %fileUrl = [baseUrl '/download.do?objectId=14317&fn=findjobj&fe=.m']; + fileUrl = [baseUrl '/14317?controller=file_infos&download=true']; + %file = urlread(fileUrl); + %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL + %fid = fopen(thisFileName,'wt'); + %fprintf(fid,'%s',file); + %fclose(fid); + [fpath,fname,fext] = fileparts(thisFileName); + zipFileName = fullfile(fpath,[fname '.zip']); + urlwrite(fileUrl,zipFileName); + unzip(zipFileName,fpath); + rehash; + catch + % Error downloading: inform the user + msgbox(['Error in downloading: ' lasterr], 'FindJObj', 'warn'); %#ok + web(webUrl); + end + case 'No & never ask again' % => No & don't ask again + setpref('FindJObj','dontCheckNewerVersion',1); + otherwise + % forget it... + end + end + end + else + % Maybe webpage not fully loaded or changed format - bail out... + end + end + catch + % Never mind... + end + end + + %% Get the first selected object (might not be the top one - depends on selection order) + function object = getTopSelectedObject(jTree, root) + try + object = []; + numSelections = jTree.getSelectionCount; + if numSelections > 0 + % Get the first object specified + %object = jTree.getSelectionPath.getLastPathComponent.getUserObject; + nodedata = get(jTree.getSelectionPath.getLastPathComponent,'userdata'); + else + % Get the root object (container) + %object = root.getUserObject; + nodedata = get(root,'userdata'); + end + object = nodedata.obj; + catch + % Never mind... + dispError + end + end + + %% Update component callback upon callbacksTable data change + function tbCallbacksChanged(src, evd, object, table) + persistent hash + try + % exit if invalid handle or already in Callback + %if ~ishandle(src) || ~isempty(getappdata(src,'inCallback')) % || length(dbstack)>1 %exit also if not called from user action + if isempty(hash), hash = java.util.Hashtable; end + if ~ishandle(src) || ~isempty(hash.get(src)) % || length(dbstack)>1 %exit also if not called from user action + return; + end + %setappdata(src,'inCallback',1); % used to prevent endless recursion % can't use getappdata(src,...) because it fails on R2010b!!! + hash.put(src,1); + + % Update the object's callback with the modified value + modifiedColIdx = evd.getColumn; + modifiedRowIdx = evd.getFirstRow; + if modifiedRowIdx>=0 %&& modifiedColIdx==1 %sanity check - should always be true + %table = evd.getSource; + %object = get(src,'userdata'); + modifiedRowIdx = table.getSelectedRow; % overcome issues with hierarchical table + cbName = strtrim(table.getValueAt(modifiedRowIdx,0)); + try + cbValue = strtrim(char(table.getValueAt(modifiedRowIdx,1))); + if ~isempty(cbValue) && ismember(cbValue(1),'{[@''') + cbValue = eval(cbValue); + end + if (~ischar(cbValue) && ~isa(cbValue, 'function_handle') && (~iscell(cbValue) || iscom(object(1)))) + revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, ''); + else + for objIdx = 1 : length(object) + obj = object(objIdx); + if ~iscom(obj) + try + try + if isjava(obj) + obj = handle(obj,'CallbackProperties'); + end + catch + % never mind... + end + set(obj, cbName, cbValue); + catch + try + set(handle(obj,'CallbackProperties'), cbName, cbValue); + catch + % never mind - probably a callback-group header + end + end + else + cbs = obj.eventlisteners; + if ~isempty(cbs) + cbs = cbs(strcmpi(cbs(:,1),cbName),:); + obj.unregisterevent(cbs); + end + if ~isempty(cbValue) && ~strcmp(cbName,'-') + obj.registerevent({cbName, cbValue}); + end + end + end + end + catch + revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, lasterr) %#ok + end + end + catch + % never mind... + end + %setappdata(src,'inCallback',[]); % used to prevent endless recursion % can't use setappdata(src,...) because it fails on R2010b!!! + hash.remove(src); + end + + %% Revert Callback table modification + function revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, errMsg) %#ok + try + % Display a notification MsgBox + msg = 'Callbacks must be a ''string'', or a @function handle'; + if ~iscom(object(1)), msg = [msg ' or a {@func,args...} construct']; end + if ~isempty(errMsg), msg = {errMsg, '', msg}; end + msgbox(msg, ['Error setting ' cbName ' value'], 'warn'); + + % Revert to the current value + curValue = ''; + try + if ~iscom(object(1)) + curValue = charizeData(get(object(1),cbName)); + else + cbs = object(1).eventlisteners; + if ~isempty(cbs) + cbs = cbs(strcmpi(cbs(:,1),cbName),:); + curValue = charizeData(cbs(1,2)); + end + end + catch + % never mind... - clear the current value + end + table.setValueAt(curValue, modifiedRowIdx, modifiedColIdx); + catch + % never mind... + end + end % revertCbTableModification + + %% Get the Java positions of all HG text labels + function labelPositions = getLabelsJavaPos(container) + try + labelPositions = []; + + % Ensure we have a figure handle + try + h = hFig; %#ok unused + catch + hFig = getCurrentFigure; + end + + % Get the figure's margins from the Matlab properties + hg_labels = findall(hFig, 'Style','text'); + units = get(hFig,'units'); + set(hFig,'units','pixels'); + outerPos = get(hFig,'OuterPosition'); + innerPos = get(hFig,'Position'); + set(hFig,'units',units); + margins = abs(innerPos-outerPos); + + figX = container.getX; % =outerPos(1) + figY = container.getY; % =outerPos(2) + %figW = container.getWidth; % =outerPos(3) + figH = container.getHeight; % =outerPos(4) + + % Get the relevant screen pixel size + %monitorPositions = get(0,'MonitorPositions'); + %for monitorIdx = size(monitorPositions,1) : -1 : 1 + % screenSize = monitorPositions(monitorIdx,:); + % if (outerPos(1) >= screenSize(1)) % && (outerPos(1)+outerPos(3) <= screenSize(3)) + % break; + % end + %end + %monitorBaseY = screenSize(4) - monitorPositions(1,4); + + % Compute the labels' screen pixel position in Java units ([0,0] = top left) + for idx = 1 : length(hg_labels) + matlabPos = getpixelposition(hg_labels(idx),1); + javaX = figX + matlabPos(1) + margins(1); + javaY = figY + figH - matlabPos(2) - matlabPos(4) - margins(2); + labelPositions(idx,:) = [javaX, javaY, matlabPos(3:4)]; %#ok grow + end + catch + % never mind... + err = lasterror; %#ok debug point + end + end + + %% Traverse an HG container hierarchy and extract the HG elements within + function traverseHGContainer(hcontainer,level,parent) + try + % Record the data for this node + thisIdx = length(hg_levels) + 1; + hg_levels(thisIdx) = level; + hg_parentIdx(thisIdx) = parent; + try + hg_handles(thisIdx) = handle(hcontainer); + catch + hg_handles = handle(hcontainer); + end + parentId = length(hg_parentIdx); + + % Now recursively process all this node's children (if any) + %if ishghandle(hcontainer) + try % try-catch is faster than checking ishghandle(hcontainer)... + allChildren = allchild(handle(hcontainer)); + for childIdx = 1 : length(allChildren) + traverseHGContainer(allChildren(childIdx),level+1,parentId); + end + catch + % do nothing - probably not a container + %dispError + end + + % TODO: Add axis (plot) component handles + catch + % forget it... + end + end + + %% Debuggable "quiet" error-handling + function dispError + err = lasterror; %#ok + msg = err.message; + for idx = 1 : length(err.stack) + filename = err.stack(idx).file; + if ~isempty(regexpi(filename,mfilename)) + funcname = err.stack(idx).name; + line = num2str(err.stack(idx).line); + msg = [msg ' at ' funcname ' line #' line '']; %#ok grow + break; + end + end + disp(msg); + return; % debug point + end + + %% ML 7.0 - compatible ischar() function + function flag = ischar(data) + try + flag = builtin('ischar',data); + catch + flag = isa(data,'char'); + end + end + + %% Set up the uitree context (right-click) menu + function jmenu = setTreeContextMenu(obj,node,tree_h) + % Prepare the context menu (note the use of HTML labels) + import javax.swing.* + titleStr = getNodeTitleStr(obj,node); + titleStr = regexprep(titleStr,'


    .*',''); + menuItem0 = JMenuItem(titleStr); + menuItem0.setEnabled(false); + menuItem0.setArmed(false); + %menuItem1 = JMenuItem('Export handle to findjobj_hdls'); + if isjava(obj), prefix = 'j'; else, prefix = 'h'; end %#ok + varname = strrep([prefix strtok(char(node.getName))], '$','_'); + varname = genvarname(varname); + varname(2) = upper(varname(2)); % ensure lowerCamelCase + menuItem1 = JMenuItem(['Export handle to ' varname]); + menuItem2 = JMenuItem('Export handle to...'); + menuItem3 = JMenuItem('Request focus (bring to front)'); + menuItem4 = JMenuItem('Flash component borders'); + menuItem5 = JMenuItem('Display properties & callbacks'); + menuItem6 = JMenuItem('Inspect object'); + + % Set the menu items' callbacks + set(handle(menuItem1,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,varname}}); + set(handle(menuItem2,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,[]}}); + set(handle(menuItem3,'CallbackProperties'), 'ActionPerformedCallback', {@requestFocus,obj}); + set(handle(menuItem4,'CallbackProperties'), 'ActionPerformedCallback', {@flashComponent,{obj,0.2,3}}); + set(handle(menuItem5,'CallbackProperties'), 'ActionPerformedCallback', {@nodeSelected,{tree_h,node}}); + set(handle(menuItem6,'CallbackProperties'), 'ActionPerformedCallback', {@btInspect_Callback,obj}); + + % Add all menu items to the context menu (with internal separator) + jmenu = JPopupMenu; + jmenu.add(menuItem0); + jmenu.addSeparator; + handleValue=[]; try handleValue = double(obj); catch, end; %#ok + if ~isempty(handleValue) + % For valid HG handles only + menuItem0a = JMenuItem('Copy handle value to clipboard'); + set(handle(menuItem0a,'CallbackProperties'), 'ActionPerformedCallback', sprintf('clipboard(''copy'',%.99g)',handleValue)); + jmenu.add(menuItem0a); + end + jmenu.add(menuItem1); + jmenu.add(menuItem2); + jmenu.addSeparator; + jmenu.add(menuItem3); + jmenu.add(menuItem4); + jmenu.add(menuItem5); + jmenu.add(menuItem6); + end % setTreeContextMenu + + %% Set the mouse-press callback + function treeMousePressedCallback(hTree, eventData, tree_h) %#ok hTree is unused + if eventData.isMetaDown % right-click is like a Meta-button + % Get the clicked node + clickX = eventData.getX; + clickY = eventData.getY; + jtree = eventData.getSource; + treePath = jtree.getPathForLocation(clickX, clickY); + try + % Modify the context menu based on the clicked node + node = treePath.getLastPathComponent; + userdata = get(node,'userdata'); + obj = userdata.obj; + jmenu = setTreeContextMenu(obj,node,tree_h); + + % TODO: remember to call jmenu.remove(item) in item callback + % or use the timer hack shown here to remove the item: + % timerFcn = {@menuRemoveItem,jmenu,item}; + % start(timer('TimerFcn',timerFcn,'StartDelay',0.2)); + + % Display the (possibly-modified) context menu + jmenu.show(jtree, clickX, clickY); + jmenu.repaint; + + % This is for debugging: + userdata.tree = jtree; + setappdata(gcf,'findjobj_hgtree',userdata) + catch + % clicked location is NOT on top of any node + % Note: can also be tested by isempty(treePath) + end + end + end % treeMousePressedCallback + + %% Remove the extra context menu item after display + function menuRemoveItem(hObj,eventData,jmenu,item) %#ok unused + jmenu.remove(item); + end % menuRemoveItem + + %% Get the title for the tooltip and context (right-click) menu + function nodeTitleStr = getNodeTitleStr(obj,node) + try + % Display the full classname and object name in the tooltip + %nodeName = char(node.getName); + %nodeName = strrep(nodeName, '',''); + %nodeName = strrep(nodeName, '',''); + nodeName = char(getNodeName(obj,99)); + [objClass,objName] = strtok(nodeName); + objName = objName(3:end-1); % strip leading ( and trailing ) + if isempty(objName), objName = '(none found)'; end + nodeName = char(node.getName); + objClass = char(obj.getClass.getName); + nodeTitleStr = sprintf('Class name: %s
    Text/title: %s',objClass,objName); + + % If the component is invisible, state this in the tooltip + if ~isempty(strfind(nodeName,'color="gray"')) + nodeTitleStr = [nodeTitleStr '
    *** Invisible ***']; + end + nodeTitleStr = [nodeTitleStr '
    Right-click for context-menu']; + catch + % Possible not a Java object - try treating as an HG handle + try + handleValueStr = sprintf('#: %.99g',double(obj)); + try + type = ''; + type = get(obj,'type'); + type(1) = upper(type(1)); + catch + if ~ishandle(obj) + type = ['Invalid ' char(node.getName) '']; + handleValueStr = '!!!
    Perhaps this handle was deleted after this UIInspect tree was
    already drawn. Try to refresh by selecting any valid node handle'; + end + end + nodeTitleStr = sprintf('%s handle %s',type,handleValueStr); + try + % If the component is invisible, state this in the tooltip + if strcmp(get(obj,'Visible'),'off') + nodeTitleStr = [nodeTitleStr '
    Invisible']; + end + catch + % never mind... + end + catch + % never mind... - ignore + end + end + end % getNodeTitleStr + + %% Handle tree mouse movement callback - used to set the tooltip & context-menu + function treeMouseMovedCallback(hTree, eventData) + try + x = eventData.getX; + y = eventData.getY; + jtree = eventData.getSource; + treePath = jtree.getPathForLocation(x, y); + try + % Set the tooltip string based on the hovered node + node = treePath.getLastPathComponent; + userdata = get(node,'userdata'); + obj = userdata.obj; + tooltipStr = getNodeTitleStr(obj,node); + set(hTree,'ToolTipText',tooltipStr) + catch + % clicked location is NOT on top of any node + % Note: can also be tested by isempty(treePath) + end + catch + dispError; + end + return; % denug breakpoint + end % treeMouseMovedCallback + + %% Request focus for a specific object handle + function requestFocus(hTree, eventData, obj) %#ok hTree & eventData are unused + % Ensure the object handle is valid + if isjava(obj) + obj.requestFocus; + return; + elseif ~ishandle(obj) + msgbox('The selected object does not appear to be a valid handle as defined by the ishandle() function. Perhaps this object was deleted after this hierarchy tree was already drawn. Refresh this tree by selecting a valid node handle and then retry.','FindJObj','warn'); + beep; + return; + end + + try + foundFlag = 0; + while ~foundFlag + if isempty(obj), return; end % sanity check + type = get(obj,'type'); + obj = double(obj); + foundFlag = any(strcmp(type,{'figure','axes','uicontrol'})); + if ~foundFlag + obj = get(obj,'Parent'); + end + end + feval(type,obj); + catch + % never mind... + dispError; + end + end % requestFocus + +end % FINDJOBJ + +% Fast implementation +function jControl = findjobj_fast(hControl, jContainer) + try jControl = hControl.getTable; return, catch, end % fast bail-out for old uitables + try jControl = hControl.JavaFrame.getGUIDEView; return, catch, end % bail-out for HG2 matlab.ui.container.Panel + oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); + if nargin < 2 || isempty(jContainer) + % Use a HG2 matlab.ui.container.Panel jContainer if the control's parent is a uipanel + try + hParent = get(hControl,'Parent'); + catch + % Probably indicates an invalid/deleted/empty handle + jControl = []; + return + end + try jContainer = hParent.JavaFrame.getGUIDEView; catch, jContainer = []; end + end + if isempty(jContainer) + hFig = ancestor(hControl,'figure'); + jf = get(hFig, 'JavaFrame'); + jContainer = jf.getFigurePanelContainer.getComponent(0); + end + warning(oldWarn); + jControl = []; + counter = 20; % 2018-09-21 speedup (100 x 0.001 => 20 x 0.005) - Martin Lehmann suggestion on FEX 2016-06-07 + specialTooltipStr = '!@#$%^&*'; + try % Fix for R2018b suggested by Eddie (FEX comment 2018-09-19) + tooltipPropName = 'TooltipString'; + oldTooltip = get(hControl,tooltipPropName); + set(hControl,tooltipPropName,specialTooltipStr); + catch + tooltipPropName = 'Tooltip'; + oldTooltip = get(hControl,tooltipPropName); + set(hControl,tooltipPropName,specialTooltipStr); + end + while isempty(jControl) && counter>0 + counter = counter - 1; + pause(0.005); + jControl = findTooltipIn(jContainer, specialTooltipStr); + end + set(hControl,tooltipPropName,oldTooltip); + try jControl.setToolTipText(oldTooltip); catch, end + try jControl = jControl.getParent.getView.getParent.getParent; catch, end % return JScrollPane if exists +end +function jControl = findTooltipIn(jContainer, specialTooltipStr) + try + jControl = []; % Fix suggested by H. Koch 11/4/2017 + tooltipStr = jContainer.getToolTipText; + %if strcmp(char(tooltipStr),specialTooltipStr) + if ~isempty(tooltipStr) && tooltipStr.startsWith(specialTooltipStr) % a bit faster + jControl = jContainer; + else + for idx = 1 : jContainer.getComponentCount + jControl = findTooltipIn(jContainer.getComponent(idx-1), specialTooltipStr); + if ~isempty(jControl), return; end + end + end + catch + % ignore + end +end + +%% TODO TODO TODO +%{ +- Enh: Improve interactive-GUI performance - esp. expandNode() +- Enh: Add property listeners - same problem in MathWork's inspect.m +- Enh: Display additional properties - same problem in MathWork's inspect.m +- Enh: Add axis (plot, Graphics) component handles +- Enh: Add figure thumbnail image below the java tree (& indicate corresponding jObject when selected) +- Enh: scroll initially-selected node into view (problem because treenode has no pixel location) +- Fix: java exceptions when getting some fields (com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run) +- Fix: use EDT if available (especially in flashComponent) +%} + + diff --git a/Jin_Parnas_Example.mdl b/Jin_Parnas_Example.mdl new file mode 100644 index 0000000..9b091f0 --- /dev/null +++ b/Jin_Parnas_Example.mdl @@ -0,0 +1,1688 @@ +# MathWorks OPC Text Package +Model { + Version 10.4 + Description "Simulink model saved in R2021b" +} +__MWOPC_PACKAGE_BEGIN__ R2021b +__MWOPC_PART_BEGIN__ /[Content_Types].xml + + + + + + + + + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /_rels/.rels + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml + + + model + 2011-01-24T17:34:29Z + colin + pesaraamarasekera + 2022-05-19T16:42:57Z + 24.0 + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml + + + application/vnd.mathworks.simulink.model + Simulink Model + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml + + + 7ddb53b8-c48f-4a73-bbf5-b511ad2448c4 + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml + + + + 9.11.0.1873467 + R2021b + Update 3 + Feb 03 2022 + 2440358501 + + +__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml + + + +

    center

    +

    middle

    +
    + + + + + + + + + +

    4

    +

    bar

    +

    off

    +
    + +

    1

    +

    off

    +

    Port number

    +

    off

    +

    []

    +

    []

    +

    Inherit: auto

    +

    off

    +

    off

    +

    inherit

    +

    -1

    +

    Inherit

    +

    -1

    +

    auto

    +

    auto

    +

    off

    +

    off

    +

    on

    +
    + +

    1

    +

    off

    +

    Port number

    +

    off

    +

    []

    +

    []

    +

    Inherit: auto

    +

    off

    +

    off

    +

    inherit

    +

    -1

    +

    Inherit

    +

    -1

    +

    auto

    +

    auto

    +

    off

    +

    Dialog

    +

    held

    +

    []

    +

    off

    +

    off

    +

    0

    +

    on

    +
    + +

    system

    +

    ''

    +

    []

    +

    auto

    +
    + +

    FromPortIcon

    +

    ReadWrite

    +

    All

    +

    off

    +

    off

    +

    Sample time

    +

    -1

    +

    Auto

    +

    Auto

    +

    Auto

    +

    void_void

    +

    off

    +

    off

    +

    Inherit from model

    +

    Inherit from model

    +

    Inherit from model

    +

    Inherit from model

    +

    Inherit from model

    +

    off

    +

    UseLocalSettings

    +

    AllNumericTypes

    +

    UseLocalSettings

    +

    off

    +

    off

    +

    NONE

    +

    off

    +

    expression

    +

    update diagram

    +

    off

    +

    off

    +

    on

    +

    off

    +

    off

    +

    off

    +

    0

    +

    off

    +

    off

    +
    + +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64 +AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO +AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA +AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAAAAMgAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA +ANAxAAABAAAAAAAAAAIAAADQMQAAAAFJTQAAAAAOAAAAMDEAAAYAAAAIAAAAAgAAAAAAAAAFAAAA +CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAA6DAAAAYAAAAI +AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAKgw +AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAABXAAAAAQAAAAEAAAAAAAAADgAAAFgJAAAGAAAACAAA +AAkAAAAAAAAABQAAAAgAAAAoCQAAAQAAAAEAAAAAAAAAAgAAACgJAAADAAAALAAAANgBAAA4AgAA +OAIAABgEAACICAAAKAkAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf +aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs +bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl +bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0 +X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90 +ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH +cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv +bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA +AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAASAAAABAAA +AAAAAAAAAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAQAAAAAAAAAAAAAA +AAAAAAUAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAC +AAAAAgAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAkAAAAHAAAAAgAAAAAA +AAAAAAAAAAAAAAoAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAsAAAAGAAAABAAAAAAAAAAAAAAAAAAA +AAwAAAAKAAAABAAAAAAAAAAAAAAAAAAAAA0AAAALAAAABAAAAAAAAAAAAAAAAAAAAA4AAAAMAAAA +BAAAAAAAAAAAAAAAAAAAAA8AAAANAAAABAAAAAAAAAAAAAAAAAAAABAAAAAOAAAABAAAAAAAAAAA +AAAAAAAAABEAAAAPAAAABAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABAAAAAAAAAAAAAAAAAAAABMA +AAARAAAAAAAAAAAAAAAJAAAAAQAAAAEAAABKAAAAHwAAAAEAAABLAAAAIAAAAAEAAABMAAAAJQAA +AAEAAABNAAAAJgAAAAEAAABOAAAAJwAAAAEAAABPAAAAKAAAAAEAAABQAAAAKQAAAAEAAABRAAAA +KgAAAAEAAABSAAAAAwAAAAIAAAABAAAARwAAAB8AAAABAAAASAAAACAAAAABAAAASQAAAAQAAAAD +AAAAAQAAABAAAAAhAAAAAQAAACcAAAAiAAAAAQAAACgAAAAXAAAAAQAAACkAAAAAAAAABAAAAAQA +AAABAAAAAAAAAAUAAAABAAAAAQAAAAYAAAABAAAADgAAABAAAAABAAAADwAAAAAAAAAEAAAABwAA +AAEAAAAKAAAACwAAAAEAAAALAAAADAAAAAEAAAAMAAAADQAAAAEAAAANAAAAAAAAAAQAAAAEAAAA +AQAAAAIAAAAFAAAAAQAAAAMAAAAGAAAAAQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABAAAAAQAAAAB +AAAABgAAAAUAAAABAAAABwAAAAYAAAABAAAACAAAABAAAAABAAAACQAAAAAAAAAGAAAABAAAAAEA +AAARAAAABQAAAAEAAAASAAAABgAAAAEAAAAjAAAAFAAAAAEAAAAkAAAAFQAAAAEAAAAlAAAAEAAA +AAEAAAAmAAAAAAAAAAQAAAAHAAAAAQAAAB8AAAALAAAAAQAAACAAAAAMAAAAAQAAACEAAAANAAAA +AQAAACIAAAAAAAAABgAAAAQAAAABAAAAEwAAAAUAAAABAAAAFAAAAAYAAAABAAAAFQAAABQAAAAB +AAAAFgAAABUAAAABAAAAFwAAABAAAAABAAAAGAAAAAAAAAAGAAAABAAAAAEAAAAZAAAABQAAAAEA +AAAaAAAABgAAAAEAAAAbAAAAFAAAAAEAAAAcAAAAFQAAAAEAAAAdAAAAEAAAAAEAAAAeAAAAAAAA +AAQAAAADAAAAAQAAACoAAAAhAAAAAQAAACsAAAAiAAAAAQAAACwAAAAXAAAAAQAAAC0AAAAAAAAA +BAAAAAMAAAABAAAALgAAACEAAAABAAAALwAAACIAAAABAAAAMAAAABcAAAABAAAAMQAAAAAAAAAE +AAAAAwAAAAEAAAAyAAAAIQAAAAEAAAAzAAAAIgAAAAEAAAA0AAAAFwAAAAEAAAA1AAAAAAAAAAQA +AAADAAAAAQAAADYAAAAhAAAAAQAAADcAAAAiAAAAAQAAADgAAAAXAAAAAQAAADkAAAAAAAAABAAA +AAMAAAABAAAAOgAAACEAAAABAAAAOwAAACIAAAABAAAAPAAAABcAAAABAAAAPQAAAAAAAAADAAAA +AwAAAAEAAAA+AAAAIQAAAAEAAAA/AAAAIgAAAAEAAABAAAAAAwAAAAMAAAABAAAAQQAAACEAAAAB +AAAAQgAAACIAAAABAAAAQwAAAAMAAAADAAAAAQAAAEQAAAAhAAAAAQAAAEUAAAAiAAAAAQAAAEYA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAO +AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeDwwAA4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAA8D8OAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQA +eD09MA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI +AAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA +AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAMAAAAAYAAAAIAAAA +BAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeD4wAA4AAAA4AAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAACEAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA +AAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAgAAAAB +AAAAAQAAAAAAAAAGAAAAIAAAAAAAAN0CAAAAAQAAAAMAAAAEAAAABgAAAAcAAAACAAAADgAAADgA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAI +QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA +AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG +AAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA +AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAUAAAABAAAADgAA +ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA +AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY +AAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA +AAABAAAAAwAAAAEAAAAAAAAAEAADAHk8MAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA +AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAACAAAAAQAAAAAAAAA +BQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHk9PTAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0A +AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAA +AAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA +AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA +AAEAAAADAAAAAQAAAAAAAAAQAAMAeT4wAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAACEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAQAAAA4A +AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA +AAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAADwPw4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAACAAAAAEA +AAABAAAAAAAAAAYAAAAgAAAAAAAA3QIAAAABAAAAAwAAAAgAAAAKAAAACwAAAAIAAAAOAAAAOAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABRA +DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA +AAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA +AAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA +AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAEAAAAOAAAA +OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA +APA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA +AAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA +AAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA +AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAE +AAAAAAAAAAUAAAAIAAAAAQAAAAcAAAABAAAAAAAAABAAAAAHAAAAeF4yLXleMgAOAAAASAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAA +AAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA +AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA +AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACgAAAAIA +AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCt5 +AA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAA +AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABgAAAAIAAAAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAIAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAcAAAABAAAA +AAAAABAAAAAHAAAAeF4yK3leMgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAD +AAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAACgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAF +AAAACAAAAAEAAAAHAAAAAQAAAAAAAAAQAAAABwAAAHheMi15XjIADgAAAEgAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAA +AAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA +GAAAAAAAAN0CAAAAAQAAAAEAAAAHAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI +AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAACAAAADgAAADgA +AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABwAAAAEAAAAAAAAAEAAAAAcAAAB4XjIteV4y +AA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAA +AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG +AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAASAAAAAYA +AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA +AAEAAAAKAAAAAgAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA +AAAAABAAAwB4K3kADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAA +AAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAA +AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAAAgAA +AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA +AAAA3QIAAAABAAAAAQAAAAsAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAA +AAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA +AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAGAAAAAgAAAA4AAABIAAAABgAA +AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA +AQAAAAsAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA +AAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA +AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAHAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA +AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAsAAAACAAAA +DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAO +AAAAaAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAA4AAAABAAAAAQAAAAAAAAAGAAAAOAAAAAAA +AN0CAAAAAQAAAAkAAAADAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAEAAAADgAA +AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd +AgAAAAEAAAABAAAABQAAAAEAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB +AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAQAAAA4AAABIAAAABgAAAAgA +AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA +AAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA +BgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF +AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAQAAAA4A +AAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAAABAAAAAGAAAAamlu +X2V4AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMA +eCx5AA4AAACYAQAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH +AAAAAQAAACMAAABzZXQAAAAAaW5wdXRzAGNvdW50AAByYW5nZQAAZXhjZXB0AAAAAAAADgAAADgA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADw +Pw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA +DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA +AAAAAECPQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA +AAAIAAAAAAAAAAAAWUAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA +AAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA +AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI +AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAAEgAAAAGAAAACAAA +AAwAAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABQAAABgAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAOAAAAUA4AAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAO +AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEA +AAAAAAAADgAAAMgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE +AA8AAAABAAAAhwAAAHBhcmVudF9jZWxsAAAAAHBhcmVudF9ncmlkAAAAAGNlbGxzAAAAAAAAAAAA +AHNwbGl0X3BiAAAAAAAAAG51bV9jZWxscwAAAAAAAGdyaWRfaW5kZXgAAAAAAHJHcmlkAAAAAAAA +AAAAAG5ld19jZWxsX3BiAAAAAGRlbGV0ZV9jZWxsX3BiAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF +AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAI +AAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgA +AAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAGgFAAAGAAAACAAA +AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABYAAAABAAAAYAEAAHN1YmdyaWQA +AAAAAAAAAAAAAAAAAABjb25kAAAAAAAAAAAAAAAAAAAAAAAAY29uZF90ZXh0AAAAAAAAAAAAAAAA +AGNlbGxfaW5kZXgAAAAAAAAAAAAAAABwYXJlbnRfZ3JpZAAAAAAAAAAAAAAAd2lkdGgAAAAAAAAA +AAAAAAAAAAAAAGhlaWdodAAAAAAAAAAAAAAAAAAAAABncmlkX3BiAAAAAAAAAAAAAAAAAAAAcGJf +ZmxhZwAAAAAAAAAAAAAAAAAAAGNvbG9yAAAAAAAAAAAAAAAAAAAAAABjb25kaXRpb25fdGV4dF93 +aWR0aAAAY29uZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAAAAAAABjb25kaXRp +b25fdGV4dF95AAAAAAAAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aAAAAAAA +AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA +AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA +DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO +AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA +AAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAA +AAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA +CAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA +AAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAA +AAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA +AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA +AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB +AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA +AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAA +CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAkQA4AAAA4 +AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA +NEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA +AAAAAAAAAD5ADgAAAPgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA +BQAEAAYAAAABAAAAEgAAAENlbGxzAEdyaWQxAEdyaWQyAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACQAQAABgAAAAgAAAACAAAA +AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAMAAAAAQAAADwAAABDZWxsMQAAAAAAAABD +ZWxsMgAAAAAAAAByZXN1bHQAAAAAAAByZXN1bHRfdGV4dABjb2xvcgAAAAAAAAAAAAAADgAAADAA +AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA +AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA +BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG +AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYA +AAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAIAwAABgAA +AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAKAAAABHcmlk +MAAAAAAAAAAAAAAAR3JpZDEAAAAAAAAAAAAAAEdyaWQyAAAAAAAAAAAAAABmdW5jdGlvbl9uYW1l +AAAAZnVuY3Rpb25faW5wdXRzAHNldHRpbmdzAAAAAAAAAABjaGVja2VkAAAAAAAAAAAAb3BlbgAA +AAAAAAAAAAAAAGZpZwAAAAAAAAAAAAAAAABtdWx0aV9tb2RlAAAAAAAADgAAADAAAAAGAAAACAAA +AAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA +BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG +AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA +AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA +AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAA +AAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA +AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA +AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA +AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA +BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAiAAAAAYAAAAIAAAACQAAAAAAAAAF +AAAACAAAAAEAAABYAAAAAQAAAAAAAAACAAAAWAAAAAABSU0AAAAADgAAAEgAAAAGAAAACAAAAAIA +AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAUAAAABAAAABQAAAE1DT1MAAAAADgAA +AAAAAAA +__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml + + + +

    9734f98b-adbe-4c2f-88a6-663f30c5d99d

    +

    maci64

    + +

    %<Auto>

    +

    %<Auto>

    +

    574864888

    +

    %<AutoIncrement:24.0>

    +
    + +

    none

    +
    + +

    normal

    + +

    $bdroot

    + + $bdroot + + + + +
    +
    + +

    warning

    +
    + + +

    Ensure deterministic transfer (maximum delay)

    +

    Ensure data integrity only

    +

    Ensure deterministic transfer (minimum delay)

    +

    None

    +
    +
    + +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/configSet0.xml + + + +

    []

    +

    + + +

    []

    +

    +

    []

    +

    0.0

    +

    10.0

    +

    auto

    +

    on

    +

    auto

    +

    auto

    +

    5

    +

    auto

    +

    10*128*eps

    +

    1000

    +

    4

    +

    1

    +

    auto

    +

    auto

    +

    1

    +

    1e-3

    +

    on

    +

    off

    +

    off

    +

    ode45

    +

    auto

    +

    auto

    +

    DisableAll

    +

    UseLocalSettings

    +

    Nonadaptive

    +

    TrustRegion

    +

    off

    +

    off

    +

    Fast

    +

    off

    +

    off

    +

    Unconstrained

    +

    Whenever possible

    +

    []

    +

    off

    +

    off

    +

    ode3

    +
    + +

    []

    +

    +

    []

    +

    1

    +

    [t, u]

    +

    xFinal

    +

    xInitial

    +

    on

    +

    1000

    +

    off

    +

    off

    +

    off

    +

    off

    +

    Array

    +

    ModelDataLogs

    +

    on

    +

    off

    +

    on

    +

    on

    +

    off

    +

    on

    +

    off

    +

    streamout

    +

    on

    +

    off

    +

    xout

    +

    tout

    +

    yout

    +

    logsout

    +

    dsmout

    +

    RefineOutputTimes

    +

    []

    +

    out

    +

    1

    +

    off

    +

    timeseries

    +

    out.mat

    +

    [-inf, inf]

    +
    + + + BooleansAsBitfields + PassReuseOutputArgsAs + PassReuseOutputArgsThreshold + ZeroExternalMemoryAtStartup + ZeroInternalMemoryAtStartup + OptimizeModelRefInitCode + NoFixptDivByZeroProtection + UseSpecifiedMinMax + EfficientTunableParamExpr + +

    +

    []

    +

    on

    +

    on

    +

    on

    +

    Tunable

    +

    off

    +

    off

    +

    off

    +

    off

    +

    double

    +

    off

    +

    off

    +

    on

    +

    on

    +

    off

    +

    off

    +

    on

    +

    off

    +

    +

    on

    +

    off

    +

    uint_T

    +

    Same as modeled

    +

    on

    +

    64

    +

    Structure reference

    +

    12

    +

    2147483647

    +

    on

    +

    5

    +

    off

    +

    off

    +

    Native Integer

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    on

    +

    inf

    +

    Inherit from target

    +

    on

    +

    off

    +

    off

    +

    off

    +

    on

    +

    on

    +

    off

    +

    off

    +

    level2

    +

    Balanced

    +

    on

    +

    off

    +

    off

    +

    GradualUnderflow

    +

    off

    +
    + + + UseOnlyExistingSharedCode + +

    +

    []

    +

    error

    +

    none

    +

    none

    +

    none

    +

    error

    +

    none

    +

    UseLocalSettings

    +

    UseLocalSettings

    +

    UseLocalSettings

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    on

    +

    Classic

    +

    none

    +

    off

    +

    UseLocalSettings

    +

    warning

    +

    warning

    +

    none

    +

    error

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    error

    +

    error

    +

    error

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    warning

    +

    error

    +

    error

    +

    none

    +

    warning

    +

    warning

    +

    none

    +

    none

    +

    none

    +

    none

    +

    none

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    warning

    +

    warning

    +

    error

    +

    none

    +

    error

    +

    none

    +

    warning

    +

    warning

    +

    UseLocalSettings

    +

    on

    +

    off

    +

    none

    +

    error

    +

    none

    +

    none

    +

    warning

    +

    warning

    +

    none

    +

    warning

    +

    error

    +

    warning

    +

    warning

    +

    error

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    ErrorLevel1

    +

    WarnAndRepair

    +

    none

    +

    warning

    +

    warning

    +

    error

    +

    error

    +

    none

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    error

    +

    warning

    +

    warning

    +

    none

    +

    warning

    +

    warning

    +

    all

    +

    warning

    +

    on

    +

    warning

    +

    warning

    +

    off

    +

    +

    none

    +

    off

    +

    warning

    +

    none

    +
    + +

    []

    +

    +

    []

    +

    8

    +

    16

    +

    32

    +

    32

    +

    64

    +

    32

    +

    64

    +

    32

    +

    32

    +

    32

    +

    Char

    +

    None

    +

    Undefined

    +

    Unspecified

    +

    32

    +

    on

    +

    off

    +

    32-bit Generic

    +

    8

    +

    16

    +

    32

    +

    32

    +

    64

    +

    32

    +

    64

    +

    32

    +

    32

    +

    32

    +

    Char

    +

    None

    +

    on

    +

    off

    +

    Undefined

    +

    Unspecified

    +

    32

    +

    32

    +

    32

    +

    Specified

    +

    off

    +

    on

    +

    on

    +

    on

    +

    EmbeddedCoderHSP

    +
    + +

    []

    +

    +

    []

    +

    IfOutOfDateOrStructuralChange

    +

    on

    +

    error

    +

    off

    +

    on

    +

    None

    +

    Multi

    +

    Infer from blocks in model

    +

    +

    on

    +

    off

    +

    off

    +

    off

    +
    + +

    []

    +

    +

    []

    +

    +

    +

    +

    +

    []

    +

    +

    +

    +

    +

    +

    +

    on

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    on

    +

    50

    +

    on

    +

    on

    +

    on

    +

    65536

    +

    off

    +

    []

    +

    NotSpecified

    +

    UseInterfaceOnly

    +

    off

    +

    None

    +

    +

    generic

    +

    C

    +

    off

    +

    200

    +

    1024

    +

    off

    +

    +

    +

    mkl-dnn

    +

    on

    +
    + + + IncludeHyperlinkInReport + GenerateTraceInfo + GenerateTraceReport + GenerateTraceReportSl + GenerateTraceReportSf + GenerateTraceReportEml + PortableWordSizes + GenerateWebview + GenerateCodeMetricsReport + GenerateCodeReplacementReport + GenerateMissedCodeReplacementReport + GenerateErtSFunction + CreateSILPILBlock + CodeExecutionProfiling + CodeProfilingSaveOptions + CodeProfilingInstrumentation + CodeStackProfiling + +

    +

    grt.tlc

    +

    None

    +

    off

    +

    off

    +

    +

    off

    +

    make_rtw

    +

    on

    +

    off

    +

    +

    grt_default_tmf

    +

    +

    off

    +

    on

    +

    off

    +

    []

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    +

    +

    +

    +

    +

    +

    +

    +

    +

    +

    +

    Automatically locate an installed toolchain

    +

    Faster Builds

    +

    []

    +

    off

    +

    off

    +

    off

    +

    None

    +

    off

    +

    executionProfile

    +

    SummaryOnly

    +

    off

    +

    off

    +

    C

    +

    None

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    []

    +

    +

    Off

    +

    1024

    +

    +

    -1

    +

    discrete

    +

    200

    +

    off

    +

    1024

    +

    on

    +

    on

    +

    on

    +

    off

    +

    3.5

    +

    +

    +

    0

    +

    none

    +

    on

    +

    19.05

    +

    unspecified

    + + + + IgnoreCustomStorageClasses + IgnoreTestpoints + InsertBlockDesc + SFDataObjDesc + SimulinkDataObjDesc + DefineNamingRule + SignalNamingRule + ParamNamingRule + InlinedPrmAccess + CustomSymbolStr + CustomSymbolStrGlobalVar + CustomSymbolStrType + CustomSymbolStrField + CustomSymbolStrFcn + CustomSymbolStrFcnArg + CustomSymbolStrBlkIO + CustomSymbolStrTmpVar + CustomSymbolStrMacro + ReqsInCode + BlockCommentType + InsertPolySpaceComments + MATLABFcnDesc + InternalIdentifier + CustomSymbolStrModelFcn + CustomSymbolStrUtil + CustomSymbolStrEmxType + CustomSymbolStrEmxFcn + CustomUserTokenString + +

    +

    []

    +

    +

    off

    +

    on

    +

    Auto

    +

    on

    +

    off

    +

    31

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    1

    +

    8

    +

    $R$N$M

    +

    $N$R$M_T

    +

    $N$M

    +

    $R$N$M$F

    +

    $R$N

    +

    rt$I$N$M

    +

    rtb_$N$M

    +

    $N$M

    +

    $R$N$M

    +

    $N$C

    +

    emxArray_$M$N

    +

    emx$M$N

    +

    +

    +

    None

    +

    +

    None

    +

    +

    None

    +

    +

    off

    +

    off

    +

    on

    +

    BlockPathComment

    +

    on

    +

    off

    +

    off

    +

    +

    Shortened

    +

    Literals

    +

    off

    +

    off

    +

    []

    +

    error

    +
    + + + GeneratePreprocessorConditionals + IncludeMdlTerminateFcn + RemoveResetFunc + SuppressErrorStatus + ERTCustomFileBanners + GenerateSampleERTMain + GenerateTestInterfaces + ModelStepFunctionPrototypeControlCompliant + CPPClassGenCompliant + PortableWordSizes + PurelyIntegerCode + PreserveStateflowLocalDataDimensions + SupportComplex + SupportAbsoluteTime + SupportContinuousTime + SupportNonInlinedSFcns + GenerateAllocFcn + ExistingSharedCode + ParenthesesLevel + ERTMultiwordTypeDef + MultiwordTypeDef + RemoveDisableFunc + +

    +

    []

    +

    ansi_tfl_table_tmw.mat

    +

    +

    +

    NOT IN USE

    +

    C89/C90 (ANSI)

    +

    None

    +

    Auto

    +

    System defined

    +

    2048

    +

    256

    +

    on

    +

    off

    +

    +

    off

    +

    off

    +

    on

    +

    on

    +

    on

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    off

    +

    Auto

    +

    off

    +

    on

    +

    rt_

    +

    on

    +

    Nonreusable function

    +

    off

    +

    on

    +

    on

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    Nominal

    +

    Nominal

    +

    Simulink.SoftwareTarget.GRTCustomization

    +

    off

    +

    on

    +

    off

    +

    off

    +

    on

    +

    off

    +

    on

    +

    on

    +

    []

    +

    []

    +

    1,2,3,4,...

    +

    Size,Breakpoints,Table

    +

    Size,Breakpoints,Table

    +

    Column-major

    +

    error

    +

    $R$E

    +

    $R$E

    +

    $R_data

    + + None + +

    off

    +

    off

    +

    off

    +

    off

    +

    1000000

    +

    0

    +

    ext_comm

    +

    +

    Level1

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    Error

    +
    +
    +
    + +

    []

    +

    Simulink Coverage Configuration Component

    +

    []

    +

    Simulink Coverage

    +

    off

    +

    EntireSystem

    +

    on

    +

    off

    +

    /

    +

    covdata

    +

    +

    dw

    +

    +

    +

    off

    +

    on

    +

    on

    +

    on

    +

    on

    +

    covCumulativeData

    +

    off

    +

    on

    +

    slcov_output/$ModelName$

    +

    $ModelName$_cvdata

    +

    on

    +

    off

    +

    +

    off

    +

    on

    +

    1e-05

    +

    0.01

    +

    off

    +

    0

    +

    0

    +

    Masking

    +
    +
    +

    Configuration

    +

    Solver

    +

    [ 200, 74, 1080, 704 ]

    +

    +

    +
    + +__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml + + + Configuration + + +__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml + + +

    0

    +

    0

    +

    +

    0

    +

    0

    +

    0

    +

    0

    +

    0

    +

    0

    +

    0

    +

    Unset

    +

    0

    +

    Simulink

    +

    0

    +

    0

    +

    1

    +
    + +__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml + + + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml + + + + + + + + + false + Default + -2147483648 + + + + +__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml + + + + + HighNumberFirst + Default + + + + + + Default + graph.Graph + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_8.xml + + +

    jin_ex/code

    +

    [293 257 161 328]

    +

    [0 156.75 0 153.75]

    +

    [1 1 1280 778 1.25]

    +

    8

    +

    LIBRARY_TOOLBAR

    +

    6

    +

    CLUSTER_CHART

    +

    EML_CHART

    +

    2

    +

    1

    + +

    jin_ex

    +
    + + +

    eML_blk_kernel()

    +

    [18 64.5 118 66]

    +

    12

    +

    SUBCHART

    +

    8

    +

    FUNC_STATE

    +

    CLUSTER_STATE

    + +

    1

    +

    function output = jin_ex(x,y) +%%#eml +output=x^2-y^2; +if(y<0) + if(x<0) + output = x^2-y^2; + elseif(x==0) + output = x^2+y^2; + elseif(x>0) + output = x^2-y^2; + end +elseif(y==0) + if(x<0) + output = x+y; + elseif(x==0) + output = x^2-y^2; + elseif(x>0) + output = x+y; + end +elseif(y>0) + if(x<0) + output = x^2+y^2; + elseif(x==0) + output = x+y; + elseif(x>0) + output = x^2+y^2; + end +end +

    +

    Matrix(4,1) +[205.0, 227.0, 1080.0, 733.0]

    +

    1

    +
    +
    + +

    INPUT_DATA

    + + +

    -1

    +
    + +

    SF_INHERITED_TYPE

    +

    SF_DOUBLE_TYPE

    +
    +

    SF_COMPLEX_INHERITED

    + +

    inherit

    +
    +
    +

    Inherit: Same as Simulink

    +
    + +

    INPUT_DATA

    + + +

    -1

    +
    + +

    SF_INHERITED_TYPE

    +

    SF_DOUBLE_TYPE

    +
    +

    SF_COMPLEX_INHERITED

    +

    SF_FRAME_NO

    + +

    inherit

    +
    +
    +

    Inherit: Same as Simulink

    +
    + +

    OUTPUT_DATA

    + + +

    -1

    +
    + +

    SF_INHERITED_TYPE

    +

    SF_DOUBLE_TYPE

    +

    1

    +

    16

    +
    +

    SF_COMPLEX_INHERITED

    +

    SF_FRAME_NO

    + +

    inherit

    +
    +
    +

    Inherit: Same as Simulink

    +
    + +

    {eML_blk_kernel();}

    +

    [32.125 19.875 102.544 14.964]

    +

    12

    + +

    [0 0 1 0 23.5747 14.625 0 0]

    +
    + +

    3

    +

    [1 0 -1 0 23.5747 42.5747 0 0]

    +
    +

    [23.5747 24.9468]

    +

    [23.575 23.575 14.625 34.575]

    +

    8

    +

    SMART

    + +

    BOTH_STICK

    +
    +

    1

    +
    + +

    [23.5747 49.5747 7]

    +

    8

    +

    CONNECTIVE_JUNCTION

    +
    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml + + + +

    80000046

    + + +

    Default Simulink S-Function Target.

    +
    + +
    +
    + +

    7

    +

    jin_ex/code

    +

    8

    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml + + +

    [395, 327, 933, 805]

    +

    [0.000000, 0.000000, 0.000000, 0.000000]

    +

    off

    +

    Deduce

    +

    Simulink

    + +

    [35, 38, 65, 52]

    +

    -1

    +
    + +

    [35, 38, 65, 52]

    +

    -2

    +

    2

    +
    + +

    [2, 1]

    +

    [250, 49, 320, 96]

    +

    -3

    +

    1.31

    +

    Stateflow.Translate.translate

    +

    ExplicitOnly

    +

    on

    +

    off

    +

    MATLAB Function

    + +
    + +

    [35, 53, 65, 67]

    +

    -4

    +
    + +

    1

    +

    4#out:1

    +

    3#in:1

    +
    + +

    2

    +

    5#out:1

    +

    3#in:2

    +
    + +

    3

    +

    3#out:1

    +

    6#in:1

    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml + + +

    [219, 337, 814, 775]

    +

    [0.000000, 0.000000, 0.000000, 0.000000]

    +

    off

    +

    Deduce

    +

    22

    +

    13

    +

    Simulink

    + +

    [20, 101, 40, 119]

    +

    -1

    +
    + +

    [20, 136, 40, 154]

    +

    -2

    +

    2

    +
    + +

    [1, 1]

    +

    [270, 230, 320, 270]

    +

    2

    +

    1

    +
    + +

    Stateflow S-Function 2

    +

    [2, 2]

    +

    [180, 100, 230, 160]

    +

    1

    +

    sf_sfun

    +

    [2 2]

    +

    off

    +

    off

    +

    off

    + +

    2

    +

    output

    +
    +
    + +

    [460, 241, 480, 259]

    +

    3

    +
    + +

    [460, 101, 480, 119]

    +

    -6

    +
    + +

    6

    +

    3::1#out:1

    +

    [120, 0]

    +

    3::20#in:1

    +
    + +

    7

    +

    3::18#out:1

    +

    3::20#in:2

    +
    + +

    output

    +

    8

    +

    [0, 0]

    +

    3::20#out:2

    +

    3::19#in:1

    +
    + +

    9

    +

    3::21#out:1

    +

    3::22#in:1

    +
    + +

    10

    +

    3::20#out:1

    +

    3::21#in:1

    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml + + +

    [820, 431, 1440, 869]

    +

    [0.000000, 0.000000, 0.000000, 0.000000]

    +

    on

    +

    off

    +

    Deduce

    +

    simulink-default.rpt

    +

    7

    +

    Simulink

    + +

    [2, 1]

    +

    [80, 54, 245, 121]

    +

    -1

    +

    1.12

    +

    on

    +

    +

    TTdiag Copy

    +

    TTdiag Delete

    +

    TTdiag Open Simulink

    +

    off

    + + port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center') + Table Block + + +
    + +

    Table1 from Jin and Parnas' paper "Defining the meaning +of tabular mathematical expressions" + +2 Dimensional normal function table of 2 variables + +provable in PVS and CVC3

    +

    [286, 62, 540, 124]

    +

    [0, 0, 0, 0]

    +

    -1

    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml + + + + +

    1

    +

    [820.0, 431.0, 620.0, 438.0]

    + +

    0

    +

    Left

    +

    50

    +

    50

    +

    9

    +

    Unset

    +
    + +

    1

    +
    + +

    1

    +

    1

    +

    SimulinkTopLevel

    +

    0

    +

    [582.0, 203.0]

    +

    1.0

    +

    [16.44140625, -6.5]

    +

    [16.44140625, -6.5, 582.0, 203.0]

    +
    + + +

    GLUE2:PropertyInspector

    +

    Property Inspector

    +

    0

    +

    +

    +

    0

    +

    Right

    +

    640

    +

    480

    +

    Unset

    +
    + +

    Simulink:Editor:ReferencedFiles

    +

    Referenced Files

    +

    0

    +

    +

    {"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"} +

    +

    0

    +

    Left

    +

    640

    +

    480

    +

    Unset

    +
    +
    +

    AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAmwAAAEIAAAAAQAAAAIAAAABAAAAAvwAAAAA

    + +

    dfa218ac-b7e7-479f-998c-2ba17f16a395

    +
    +

    +

    +
    + +__MWOPC_PACKAGE_END__ diff --git a/Jin_Parnas_Example.mdl.r2010a b/Jin_Parnas_Example.mdl.r2010a new file mode 100644 index 0000000..0b5a8b9 --- /dev/null +++ b/Jin_Parnas_Example.mdl.r2010a @@ -0,0 +1,1243 @@ +Model { + Name "Jin_Parnas_Example" + Version 7.5 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.2" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "ISO-8859-1" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + MaxMDLFileLineLength 120 + Created "Mon Jan 24 12:34:29 2011" + Creator "colin" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "matthew" + ModifiedDateFormat "%" + LastModifiedDate "Thu May 15 15:26:50 2014" + RTWModifiedTimeStamp 322068405 + ModelVersionFormat "1.%" + ConfigurationManager "none" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 6 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 19 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "SFDataObjDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "SupportNonFinite" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "PortableWordSizes" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] " + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 1 + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Outport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType "S-Function" + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + Block { + BlockType Terminator + } + } + System { + Name "Jin_Parnas_Example" + Location [1009, 551, 1589, 811] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 6 + Block { + BlockType SubSystem + Name "jin_ex" + SID 1 + Ports [2, 1] + Position [80, 54, 245, 121] + LibraryVersion "1.12" + UserDataPersistent on + UserData "DataTag0" + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5," + " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center')\ncolor('green')\ntext(0.5, 0.1, 'Checked', 'horizon" + "talAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "jin_ex" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "x" + SID 4 + Position [35, 38, 65, 52] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "y" + SID 5 + Position [35, 38, 65, 52] + Port "2" + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Block { + BlockType SubSystem + Name "code" + SID 3 + Ports [2, 1] + Position [250, 49, 320, 96] + LibraryVersion "1.31" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskDisplay "disp('jin_ex');" + MaskSelfModifiable on + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "autoscale" + System { + Name "code" + Location [257, 457, 812, 717] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark 19 + SIDPrevWatermark 13 + Block { + BlockType Inport + Name "x" + SID 1 + Position [20, 101, 40, 119] + IconDisplay "Port number" + OutDataType "sfix(16)" + OutScaling "2^0" + } + Block { + BlockType Inport + Name "y" + SID 18 + Position [20, 136, 40, 154] + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID 15 + Ports [1, 1] + Position [270, 160, 320, 200] + Outputs "1" + } + Block { + BlockType "S-Function" + Name " SFunction " + SID 14 + Tag "Stateflow S-Function Jin_Parnas_Example 2" + Ports [2, 2] + Position [180, 100, 230, 160] + FunctionName "sf_sfun" + PortCounts "[2 2]" + EnableBusSupport off + Port { + PortNumber 2 + Name "output" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID 17 + Position [460, 171, 480, 189] + } + Block { + BlockType Outport + Name "output" + SID 19 + Position [460, 101, 480, 119] + IconDisplay "Port number" + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + Line { + SrcBlock "x" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "y" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "output" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "output" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "output" + SID 6 + Position [35, 53, 65, 67] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + Line { + SrcBlock "x" + SrcPort 1 + DstBlock "code" + DstPort 1 + } + Line { + SrcBlock "y" + SrcPort 1 + DstBlock "code" + DstPort 2 + } + Line { + SrcBlock "code" + SrcPort 1 + DstBlock "output" + DstPort 1 + } + } + } + Annotation { + Name "Table1 from Jin and Parnas' paper \"Defining the meaning\nof tabular mathematical expressions\"\n\n" + "2 Dimensional normal function table of 2 variables\n\nprovable in PVS and CVC3" + Position [413, 93] + } + } +} +MatData { + NumRecords 1 + DataRecord { + Tag DataTag0 + Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #@,@ !@ @ ) 4" + " ( 0 + R ! ( \"P,@ %)30 . $#( 8 ( @ % \" $ ! 0 " + " % 0 !0 $ % 34-/4P . R#$ 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E<" + "E]? #@ (@Q & \" $ !0 @ !9 0 $ #@ (@) & \" D !0 @ " + " !8\"0 0 $ @ %@) \" + -@! X @ . ( !@$ \"X\" 6 D 1W)I9# 0V5L;', 0V5L;#$" + " 8V]N9%]T97AT &-E;&Q?:6YD97@ <&%R96YT7V=R:60 8V5L;', 1W)I9 !P87)E;G1?8V5L; !S<&QI=%]P8@!N=6U?8V5L;', 9W)I9%]I;F1E>" + " !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F 0 # 0 \"H A 0 \"L B 0 \"P 7 0 \"T " + " ! , ! +@ \"$ ! +P \"( ! , !< ! ,0 $ P $ R (0 $ S " + " (@ $ T %P $ U 0 # 0 #8 A 0 #< B 0 #@ 7 0 #D !" + " , ! .@ \"$ ! .P \"( ! / !< ! /0 $ P $ ^ (0 $ _ (" + "@ $ ! %P $ !! 0 # 0 $( A 0 $, B 0 $0 7 0 $4 ! " + " , ! 1@ \"$ ! 1P \"( ! 2 !< ! 20 " + " " + " #@ . , 8 ( ! % \" " + "$ # 0 0 , >#PP X X !@ @ & 4 ( 0 $ ! D ( " + "\\#\\. , 8 ( ! % \" $ $ 0 0 0 >#T], X X !@ @ & 4" + " ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 ! 0 " + " & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ ! D " + " ( \\#\\. , 8 ( ! % \" $ # 0 0 , >#XP X X !@ @ " + " & 4 ( 0 $ ! D ( \"$ . 2 8 ( #0 % \" 8 " + " ! 0 & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ " + " ! D ( \\#\\. 4 8 ( #0 % \" @ ! 0 & ( " + " -T\" 0 , $ !@ < \" #@ #@ & \" 8 !0 @ ! 0 $ \"0 " + "@ (0 X X !@ @ & 4 ( 0 $ ! D ( \\#\\. 2 " + "8 ( #0 % \" 8 ! 0 & & -T\" 0 $ \" P X !( !@ " + " @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! #@ #@ & \" " + "8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $" + " ! 8 8 W0( ! 0 0 \" #@ # & \" 0 !0 @ ! P $" + " $ # 'D\\, . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #" + " & \" 0 !0 @ ! ! $ $ $ 'D]/3 . . 8 ( !@ % \" " + "$ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 $ !@ !" + "@ #= @ $ ! \"0 $ . . 8 ( !@ % \" $ ! 0 ) \" " + " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ " + " @ & 4 ( 0 $ ! D ( \\#\\. , 8 ( ! % \" " + " $ # 0 0 , >3XP X X !@ @ & 4 ( 0 $ ! D ( " + " \"$ . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ) 0 " + " X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ " + " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 " + " $ \"0 @ #P/PX !0 !@ @ - 4 ( \" $ ! 8 @ " + "W0( ! P @ * \"P ( . . 8 ( !@ % \" $ ! 0 ) \" " + " A #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ 0 X !( !@ " + " @ - 4 ( !@ $ ! 8 8 W0( ! 0 ( # #@ $@ & \" " + " T !0 @ & 0 $ !@ !@ #= @ $ ! \"0 $ . . 8 ( !@ " + " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 " + " $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! D ( " + " \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ( @ " + " X X !@ @ $ 4 ( 0 < ! ! ' >%XR+7E>,@ . 2 8 ( !@ " + " % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - " + " 4 ( !@ $ ! 8 8 W0( ! 0 0 \" #@ $@ & \" T !0 " + " @ & 0 $ !@ !@ #= @ $ ! \"@ ( . , 8 ( ! % \" " + " $ # 0 0 , >\"MY X !( !@ @ & 4 ( 0 , ! D 8 " + " \\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ " + " $ ! ! ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 " + " $ + @ X X !@ @ $ 4 ( 0 < ! ! ' >%XR*WE>,@ . 2 " + "8 ( !@ % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ " + " @ - 4 ( !@ $ ! 8 8 W0( ! 0 8 \" #@ $@ & \" " + " T !0 @ & 0 $ !@ !@ #= @ $ ! \" ( . . 8 ( ! " + " % \" $ ' 0 0 !P 'A>,BMY7C( #@ $@ & \" 8 !0 @ ! P " + "$ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 " + " & & -T\" 0 $ & @ X !( !@ @ - 4 ( !@ $ ! " + " 8 8 W0( ! 0 H \" #@ #@ & \" 0 !0 @ ! !P $ $ " + " < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 \\#\\ #P/" + "P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! !@ " + "( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ + @ " + "X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 !0 @" + " ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" " + " 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4 ( !@ " + "$ ! 8 8 W0( ! 0 @ \" #@ #@ & \" 0 !0 @ ! !P " + "$ $ < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 " + "\\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $" + " ! !P ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $" + " * @ X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 " + " !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 " + " % \" 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4" + " ( !@ $ ! 8 8 W0( ! 0 L \" #@ #@ & \" 0 !0 @" + " ! !P $ $ < !X7C(K>5XR X !( !@ @ & 4 ( 0 , ! D " + " 8 \\#\\ #P/P / _#@ &@ & \" T !0 @ . 0 $ !@ #@ " + " #= @ $ ) P P - #@ \\ 0 $0 !( 3 ! X !( !@ @ - 4 " + " ( !@ $ ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ " + " & 0 $ !@ !@ #= @ $ ! \"0 $ . 2 8 ( #0 % \" 8 " + " ! 0 & & -T\" 0 $ \" P X !( !@ @ - 4 ( !@ $ " + " ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ & 0 $ " + " !@ !@ #= @ $ ! \"0 $ . . 8 ( ! % \" $ & 0 " + "0 !@ &II;E]E> #@ # & \" 0 !0 @ ! P $ $ # '@L>0 . F $ 8 (" + " @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> " + " &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H X P !@ @ & " + " 4 ( ! D #@ # & \" 8 !0 @ $ " + " \"0 . , 8 ( !@ % \" 0 ) X X !@ @ & " + " 4 ( 0 $ ! D ( . , 8 ( !@ % \" " + " 0 ) X X !@ @ & 4 ( 0 $ ! D ( . . " + " 8 ( !@ % \" $ ! 0 ) \" #@ # & \" 8 !" + "0 @ $ \"0 . . 8 ( !@ % \" $ ! 0 ) \"" + " #@ # & \" 8 !0 @ $ \"0 . . 8 ( !" + "@ % \" $ ! 0 ) \" &E #@ #@ & \" 8 !0 @ ! " + " 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 $ ! D ( " + " )$ . . 8 ( !@ % \" $ ! 0 ) \" \"1 #@ #@ & " + "\" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ @ & 4 ( " + " 0 $ ! D ( /D . ^ 8 ( @ % \" $ ! 0 % 0 !" + "@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @ $ \"" + "0 . , 8 ( !@ % \" 0 ) X P !@ @ & " + " 4 ( ! D #@ ) ! & \" ( !0 @ ! 0 $ !0 " + "$ P ! / $-E;&PQ $-E;&PR ')E0)\n output = x^2-y^2;\n end\nelseif(y==0)\n if(x<0)\n" + " output = x+y;\n elseif(x==0)\n output = x^2-y^2;\n elseif(x>0)\n output = x+y;\n end\nelseif(y>0)\n" + " if(x<0)\n output = x^2+y^2;\n elseif(x==0)\n output = x+y;\n elseif(x>0)\n output = x^2+y^2;\n end" + "\nend\n" + editorLayout "100 M4x1[205 227 1080 733]" + } + } + junction { + id 4 + position [23.5747 49.5747 7] + chart 2 + linkNode [2 0 0] + subviewer 2 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 5 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 4 + intersection [7 0 -1 -1 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 2 + linkNode [2 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 2 + drawStyle SMART + executionOrder 1 + ssIdNumber 2 + } + data { + id 6 + ssIdNumber 4 + name "x" + linkNode [2 0 7] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 7 + ssIdNumber 5 + name "y" + linkNode [2 6 8] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 8 + ssIdNumber 6 + name "output" + linkNode [2 7 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 9 + name "jin_ex/code" + machine 1 + chart 2 + } + target { + id 10 + name "sfun" + description "Default Simulink S-Function Target." + machine 1 + linkNode [1 0 0] + } +} diff --git a/untitled.slx b/demo_1.slx similarity index 100% rename from untitled.slx rename to demo_1.slx diff --git a/f.cvc b/f.cvc new file mode 100644 index 0000000..d0499af --- /dev/null +++ b/f.cvc @@ -0,0 +1,24 @@ +x:REAL; +y:REAL; +ECHO "begin1"; +PUSH; +QUERY (NOT ( (y<0) AND (y = 0) ) AND +NOT ( (y<0) AND (y>0) ) AND +NOT ( (y = 0) AND (y>0) )); +POP; +ECHO "end1"; +ECHO "begin2"; +PUSH; +QUERY ((y<0) OR (y = 0) OR (y>0)); +POP; +ECHO "end2"; +ECHO "begin3"; +PUSH; +QUERY (NOT ( (x<=1) AND (x>1) )); +POP; +ECHO "end3"; +ECHO "begin4"; +PUSH; +QUERY ((x<=1) OR (x>1)); +POP; +ECHO "end4"; diff --git a/jin_ex.cvc b/jin_ex.cvc new file mode 100644 index 0000000..29a8da1 --- /dev/null +++ b/jin_ex.cvc @@ -0,0 +1,26 @@ +x:REAL; +y:REAL; +ECHO "begin1"; +PUSH; +QUERY (NOT ( (y<0) AND (y = 0) ) AND +NOT ( (y<0) AND (y>0) ) AND +NOT ( (y = 0) AND (y>0) )); +POP; +ECHO "end1"; +ECHO "begin2"; +PUSH; +QUERY ((y<0) OR (y = 0) OR (y>0)); +POP; +ECHO "end2"; +ECHO "begin3"; +PUSH; +QUERY (NOT ( (x<0) AND (x = 0) ) AND +NOT ( (x<0) AND (x>0) ) AND +NOT ( (x = 0) AND (x>0) )); +POP; +ECHO "end3"; +ECHO "begin4"; +PUSH; +QUERY ((x<0) OR (x = 0) OR (x>0)); +POP; +ECHO "end4"; diff --git a/untitled1.slx b/untitled1.slx new file mode 100644 index 0000000000000000000000000000000000000000..cfcd5d8df75a07fd887cf591b4a50b9288718348 GIT binary patch literal 47945 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 Date: Tue, 24 May 2022 11:41:22 -0400 Subject: [PATCH 5/8] solved saving problem --- TableLibrary.mdl | 1677 +++++++++++++++++++++++---------------- TableLibrary.mdl.r2010a | 679 ++++++++++++++++ untitled1.slx | Bin 47945 -> 72911 bytes 3 files changed, 1678 insertions(+), 678 deletions(-) create mode 100644 TableLibrary.mdl.r2010a diff --git a/TableLibrary.mdl b/TableLibrary.mdl index 810af97..fcfcd83 100644 --- a/TableLibrary.mdl +++ b/TableLibrary.mdl @@ -1,679 +1,1000 @@ -Library { - Name "TableLibrary" - Version 7.5 - MdlSubVersion 0 - SavedCharacterEncoding "UTF-8" - LibraryType "BlockLibrary" - SaveDefaultBlockParams on - ScopeRefreshTime 0.035000 - OverrideScopeRefreshTime on - DisableAllScopes off - MaxMDLFileLineLength 120 - Created "Thu Apr 8 11:30:49 2010" - Creator "elesc" - UpdateHistory "UpdateHistoryNever" - ModifiedByFormat "%" - LastModifiedBy "colin" - ModifiedDateFormat "%" - LastModifiedDate "Tue Sep 21 13:08:03 2010" - RTWModifiedTimeStamp 206975269 - ModelVersionFormat "1.%" - ConfigurationManager "None" - SampleTimeColors off - SampleTimeAnnotations off - LibraryLinkDisplay "none" - WideLines off - ShowLineDimensions off - ShowPortDataTypes off - ShowLoopsOnError on - IgnoreBidirectionalLines off - ShowStorageClass off - ShowTestPointIcons on - ShowSignalResolutionIcons on - ShowViewerIcons on - SortedOrder off - ExecutionContextIcon off - ShowLinearizationAnnotations on - BlockNameDataTip off - BlockParametersDataTip off - BlockDescriptionStringDataTip off - ToolBar on - StatusBar on - BrowserShowLibraryLinks off - BrowserLookUnderMasks off - SimulationMode "normal" - LinearizationMsg "none" - Profile off - ParamWorkspaceSource "MATLABWorkspace" - RecordCoverage off - CovSaveName "covdata" - CovMetricSettings "dw" - CovNameIncrementing off - CovHtmlReporting on - CovForceBlockReductionOff on - covSaveCumulativeToWorkspaceVar on - CovSaveSingleToWorkspaceVar on - CovCumulativeReport off - CovReportOnPause on - CovModelRefEnable "Off" - CovExternalEMLEnable off - ExtModeBatchMode off - ExtModeEnableFloating on - ExtModeTrigType "manual" - ExtModeTrigMode "normal" - ExtModeTrigPort "1" - ExtModeTrigElement "any" - ExtModeTrigDuration 1000 - ExtModeTrigDurationFloating "auto" - ExtModeTrigHoldOff 0 - ExtModeTrigDelay 0 - ExtModeTrigDirection "rising" - ExtModeTrigLevel 0 - ExtModeArchiveMode "off" - ExtModeAutoIncOneShot off - ExtModeIncDirWhenArm off - ExtModeAddSuffixToVar off - ExtModeWriteAllDataToWs off - ExtModeArmWhenConnect on - ExtModeSkipDownloadWhenConnect off - ExtModeLogAll on - ExtModeAutoUpdateStatusClock on - ShowModelReferenceBlockVersion off - ShowModelReferenceBlockIO off - Array { - Type "Handle" - Dimension 1 - Simulink.ConfigSet { - $ObjectID 1 - Version "1.10.0" - Array { - Type "Handle" - Dimension 8 - Simulink.SolverCC { - $ObjectID 2 - Version "1.10.0" - StartTime "0.0" - StopTime "10.0" - AbsTol "auto" - FixedStep "auto" - InitialStep "auto" - MaxNumMinSteps "-1" - MaxOrder 5 - ZcThreshold "auto" - ConsecutiveZCsStepRelTol "10*128*eps" - MaxConsecutiveZCs "1000" - ExtrapolationOrder 4 - NumberNewtonIterations 1 - MaxStep "auto" - MinStep "auto" - MaxConsecutiveMinStep "1" - RelTol "1e-3" - SolverMode "Auto" - Solver "ode45" - SolverName "ode45" - SolverJacobianMethodControl "auto" - ShapePreserveControl "DisableAll" - ZeroCrossControl "UseLocalSettings" - ZeroCrossAlgorithm "Nonadaptive" - AlgebraicLoopSolver "TrustRegion" - SolverResetMethod "Fast" - PositivePriorityOrder off - AutoInsertRateTranBlk off - SampleTimeConstraint "Unconstrained" - InsertRTBMode "Whenever possible" - } - Simulink.DataIOCC { - $ObjectID 3 - Version "1.10.0" - Decimation "1" - ExternalInput "[t, u]" - FinalStateName "xFinal" - InitialState "xInitial" - LimitDataPoints on - MaxDataPoints "1000" - LoadExternalInput off - LoadInitialState off - SaveFinalState off - SaveCompleteFinalSimState off - SaveFormat "Array" - SaveOutput on - SaveState off - SignalLogging on - DSMLogging on - InspectSignalLogs off - SaveTime on - ReturnWorkspaceOutputs off - StateSaveName "xout" - TimeSaveName "tout" - OutputSaveName "yout" - SignalLoggingName "logsout" - DSMLoggingName "dsmout" - OutputOption "RefineOutputTimes" - OutputTimes "[]" - ReturnWorkspaceOutputsName "out" - Refine "1" - } - Simulink.OptimizationCC { - $ObjectID 4 - Version "1.10.0" - Array { - Type "Cell" - Dimension 7 - Cell "BooleansAsBitfields" - Cell "PassReuseOutputArgsAs" - Cell "PassReuseOutputArgsThreshold" - Cell "ZeroExternalMemoryAtStartup" - Cell "ZeroInternalMemoryAtStartup" - Cell "OptimizeModelRefInitCode" - Cell "NoFixptDivByZeroProtection" - PropName "DisabledProps" - } - BlockReduction on - BooleanDataType on - ConditionallyExecuteInputs on - InlineParams off - UseIntDivNetSlope off - InlineInvariantSignals off - OptimizeBlockIOStorage on - BufferReuse on - EnhancedBackFolding off - StrengthReduction off - EnforceIntegerDowncast on - ExpressionFolding on - BooleansAsBitfields off - BitfieldContainerType "uint_T" - EnableMemcpy on - MemcpyThreshold 64 - PassReuseOutputArgsAs "Structure reference" - ExpressionDepthLimit 2147483647 - FoldNonRolledExpr on - LocalBlockOutputs on - RollThreshold 5 - SystemCodeInlineAuto off - StateBitsets off - DataBitsets off - UseTempVars off - ZeroExternalMemoryAtStartup on - ZeroInternalMemoryAtStartup on - InitFltsAndDblsToZero off - NoFixptDivByZeroProtection off - EfficientFloat2IntCast off - EfficientMapNaN2IntZero on - OptimizeModelRefInitCode off - LifeSpan "inf" - MaxStackSize "Inherit from target" - BufferReusableBoundary on - SimCompilerOptimization "Off" - AccelVerboseBuild off - } - Simulink.DebuggingCC { - $ObjectID 5 - Version "1.10.0" - RTPrefix "error" - ConsistencyChecking "none" - ArrayBoundsChecking "none" - SignalInfNanChecking "none" - SignalRangeChecking "none" - ReadBeforeWriteMsg "UseLocalSettings" - WriteAfterWriteMsg "UseLocalSettings" - WriteAfterReadMsg "UseLocalSettings" - AlgebraicLoopMsg "warning" - ArtificialAlgebraicLoopMsg "warning" - SaveWithDisabledLinksMsg "warning" - SaveWithParameterizedLinksMsg "warning" - CheckSSInitialOutputMsg on - UnderspecifiedInitializationDetection "Classic" - MergeDetectMultiDrivingBlocksExec "none" - CheckExecutionContextPreStartOutputMsg off - CheckExecutionContextRuntimeOutputMsg off - SignalResolutionControl "UseLocalSettings" - BlockPriorityViolationMsg "warning" - MinStepSizeMsg "warning" - TimeAdjustmentMsg "none" - MaxConsecutiveZCsMsg "error" - SolverPrmCheckMsg "warning" - InheritedTsInSrcMsg "warning" - DiscreteInheritContinuousMsg "warning" - MultiTaskDSMMsg "error" - MultiTaskCondExecSysMsg "error" - MultiTaskRateTransMsg "error" - SingleTaskRateTransMsg "none" - TasksWithSamePriorityMsg "warning" - SigSpecEnsureSampleTimeMsg "warning" - CheckMatrixSingularityMsg "none" - IntegerOverflowMsg "warning" - Int32ToFloatConvMsg "warning" - ParameterDowncastMsg "error" - ParameterOverflowMsg "error" - ParameterUnderflowMsg "none" - ParameterPrecisionLossMsg "warning" - ParameterTunabilityLossMsg "warning" - FixptConstUnderflowMsg "none" - FixptConstOverflowMsg "none" - FixptConstPrecisionLossMsg "none" - UnderSpecifiedDataTypeMsg "none" - UnnecessaryDatatypeConvMsg "none" - VectorMatrixConversionMsg "none" - InvalidFcnCallConnMsg "error" - FcnCallInpInsideContextMsg "Use local settings" - SignalLabelMismatchMsg "none" - UnconnectedInputMsg "warning" - UnconnectedOutputMsg "warning" - UnconnectedLineMsg "warning" - SFcnCompatibilityMsg "none" - UniqueDataStoreMsg "none" - BusObjectLabelMismatch "warning" - RootOutportRequireBusObject "warning" - AssertControl "UseLocalSettings" - EnableOverflowDetection off - ModelReferenceIOMsg "none" - ModelReferenceVersionMismatchMessage "none" - ModelReferenceIOMismatchMessage "none" - ModelReferenceCSMismatchMessage "none" - UnknownTsInhSupMsg "warning" - ModelReferenceDataLoggingMessage "warning" - ModelReferenceSymbolNameMessage "warning" - ModelReferenceExtraNoncontSigs "error" - StateNameClashWarn "warning" - SimStateInterfaceChecksumMismatchMsg "warning" - StrictBusMsg "Warning" - BusNameAdapt "WarnAndRepair" - NonBusSignalsTreatedAsBus "none" - LoggingUnavailableSignals "error" - BlockIODiagnostic "none" - } - Simulink.HardwareCC { - $ObjectID 6 - Version "1.10.0" - ProdBitPerChar 8 - ProdBitPerShort 16 - ProdBitPerInt 32 - ProdBitPerLong 32 - ProdIntDivRoundTo "Undefined" - ProdEndianess "Unspecified" - ProdWordSize 32 - ProdShiftRightIntArith on - ProdHWDeviceType "32-bit Generic" - TargetBitPerChar 8 - TargetBitPerShort 16 - TargetBitPerInt 32 - TargetBitPerLong 32 - TargetShiftRightIntArith on - TargetIntDivRoundTo "Undefined" - TargetEndianess "Unspecified" - TargetWordSize 32 - TargetTypeEmulationWarnSuppressLevel 0 - TargetPreprocMaxBitsSint 32 - TargetPreprocMaxBitsUint 32 - TargetHWDeviceType "Specified" - TargetUnknown off - ProdEqTarget on - } - Simulink.ModelReferenceCC { - $ObjectID 7 - Version "1.10.0" - UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" - CheckModelReferenceTargetMessage "error" - EnableParallelModelReferenceBuilds off - ParallelModelReferenceMATLABWorkerInit "None" - ModelReferenceNumInstancesAllowed "Multi" - PropagateVarSize "Infer from blocks in model" - ModelReferencePassRootInputsByReference on - ModelReferenceMinAlgLoopOccurrences off - PropagateSignalLabelsOutOfModel off - SupportModelReferenceSimTargetCustomCode off - } - Simulink.SFSimCC { - $ObjectID 8 - Version "1.10.0" - SFSimEnableDebug on - SFSimOverflowDetection on - SFSimEcho on - SimBlas on - SimCtrlC on - SimExtrinsic on - SimIntegrity on - SimUseLocalCustomCode off - SimBuildMode "sf_incremental_build" - } - Simulink.RTWCC { - $BackupClass "Simulink.RTWCC" - $ObjectID 9 - Version "1.10.0" - Array { - Type "Cell" - Dimension 6 - Cell "IncludeHyperlinkInReport" - Cell "GenerateTraceInfo" - Cell "GenerateTraceReport" - Cell "GenerateTraceReportSl" - Cell "GenerateTraceReportSf" - Cell "GenerateTraceReportEml" - PropName "DisabledProps" - } - SystemTargetFile "grt.tlc" - GenCodeOnly off - MakeCommand "make_rtw" - GenerateMakefile on - TemplateMakefile "grt_default_tmf" - GenerateReport off - SaveLog off - RTWVerbose on - RetainRTWFile off - ProfileTLC off - TLCDebug off - TLCCoverage off - TLCAssert off - ProcessScriptMode "Default" - ConfigurationMode "Optimized" - ConfigAtBuild off - RTWUseLocalCustomCode off - RTWUseSimCustomCode off - IncludeHyperlinkInReport off - LaunchReport off - TargetLang "C" - IncludeBusHierarchyInRTWFileBlockHierarchyMap off - IncludeERTFirstTime off - GenerateTraceInfo off - GenerateTraceReport off - GenerateTraceReportSl off - GenerateTraceReportSf off - GenerateTraceReportEml off - GenerateCodeInfo off - RTWCompilerOptimization "Off" - CheckMdlBeforeBuild "Off" - CustomRebuildMode "OnUpdate" - Array { - Type "Handle" - Dimension 2 - Simulink.CodeAppCC { - $ObjectID 10 - Version "1.10.0" - Array { - Type "Cell" - Dimension 19 - Cell "IgnoreCustomStorageClasses" - Cell "IgnoreTestpoints" - Cell "InsertBlockDesc" - Cell "SFDataObjDesc" - Cell "SimulinkDataObjDesc" - Cell "DefineNamingRule" - Cell "SignalNamingRule" - Cell "ParamNamingRule" - Cell "InlinedPrmAccess" - Cell "CustomSymbolStr" - Cell "CustomSymbolStrGlobalVar" - Cell "CustomSymbolStrType" - Cell "CustomSymbolStrField" - Cell "CustomSymbolStrFcn" - Cell "CustomSymbolStrFcnArg" - Cell "CustomSymbolStrBlkIO" - Cell "CustomSymbolStrTmpVar" - Cell "CustomSymbolStrMacro" - Cell "ReqsInCode" - PropName "DisabledProps" - } - ForceParamTrailComments off - GenerateComments on - IgnoreCustomStorageClasses on - IgnoreTestpoints off - IncHierarchyInIds off - MaxIdLength 31 - PreserveName off - PreserveNameWithParent off - ShowEliminatedStatement off - IncAutoGenComments off - SimulinkDataObjDesc off - SFDataObjDesc off - IncDataTypeInIds off - MangleLength 1 - CustomSymbolStrGlobalVar "$R$N$M" - CustomSymbolStrType "$N$R$M" - CustomSymbolStrField "$N$M" - CustomSymbolStrFcn "$R$N$M$F" - CustomSymbolStrFcnArg "rt$I$N$M" - CustomSymbolStrBlkIO "rtb_$N$M" - CustomSymbolStrTmpVar "$N$M" - CustomSymbolStrMacro "$R$N$M" - DefineNamingRule "None" - ParamNamingRule "None" - SignalNamingRule "None" - InsertBlockDesc off - SimulinkBlockComments on - EnableCustomComments off - InlinedPrmAccess "Literals" - ReqsInCode off - UseSimReservedNames off - } - Simulink.GRTTargetCC { - $BackupClass "Simulink.TargetCC" - $ObjectID 11 - Version "1.10.0" - Array { - Type "Cell" - Dimension 17 - Cell "GeneratePreprocessorConditionals" - Cell "IncludeMdlTerminateFcn" - Cell "CombineOutputUpdateFcns" - Cell "SuppressErrorStatus" - Cell "ERTCustomFileBanners" - Cell "GenerateSampleERTMain" - Cell "GenerateTestInterfaces" - Cell "ModelStepFunctionPrototypeControlCompliant" - Cell "CPPClassGenCompliant" - Cell "MultiInstanceERTCode" - Cell "PurelyIntegerCode" - Cell "SupportNonFinite" - Cell "SupportComplex" - Cell "SupportAbsoluteTime" - Cell "SupportContinuousTime" - Cell "SupportNonInlinedSFcns" - Cell "PortableWordSizes" - PropName "DisabledProps" - } - TargetFcnLib "ansi_tfl_table_tmw.mat" - TargetLibSuffix "" - TargetPreCompLibLocation "" - TargetFunctionLibrary "ANSI_C" - UtilityFuncGeneration "Auto" - ERTMultiwordTypeDef "System defined" - ERTCodeCoverageTool "None" - ERTMultiwordLength 256 - MultiwordLength 2048 - GenerateFullHeader on - GenerateSampleERTMain off - GenerateTestInterfaces off - IsPILTarget off - ModelReferenceCompliant on - ParMdlRefBuildCompliant on - CompOptLevelCompliant on - IncludeMdlTerminateFcn on - GeneratePreprocessorConditionals "Disable all" - CombineOutputUpdateFcns off - SuppressErrorStatus off - ERTFirstTimeCompliant off - IncludeFileDelimiter "Auto" - ERTCustomFileBanners off - SupportAbsoluteTime on - LogVarNameModifier "rt_" - MatFileLogging on - MultiInstanceERTCode off - SupportNonFinite on - SupportComplex on - PurelyIntegerCode off - SupportContinuousTime on - SupportNonInlinedSFcns on - SupportVariableSizeSignals off - EnableShiftOperators on - ParenthesesLevel "Nominal" - PortableWordSizes off - ModelStepFunctionPrototypeControlCompliant off - CPPClassGenCompliant off - AutosarCompliant off - UseMalloc off - ExtMode off - ExtModeStaticAlloc off - ExtModeTesting off - ExtModeStaticAllocSize 1000000 - ExtModeTransport 0 - ExtModeMexFile "ext_comm" - ExtModeIntrfLevel "Level1" - RTWCAPISignals off - RTWCAPIParams off - RTWCAPIStates off - GenerateASAP2 off - } - PropName "Components" - } - } - PropName "Components" - } - Name "Configuration" - CurrentDlgPage "Solver" - ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] " - } - PropName "ConfigurationSets" - } - BlockDefaults { - ForegroundColor "black" - BackgroundColor "white" - DropShadow off - NamePlacement "normal" - FontName "Helvetica" - FontSize 10 - FontWeight "normal" - FontAngle "normal" - ShowName on - BlockRotation 0 - BlockMirror off - } - AnnotationDefaults { - HorizontalAlignment "center" - VerticalAlignment "middle" - ForegroundColor "black" - BackgroundColor "white" - DropShadow off - FontName "Helvetica" - FontSize 10 - FontWeight "normal" - FontAngle "normal" - UseDisplayTextAsClickCallback off - } - LineDefaults { - FontName "Helvetica" - FontSize 9 - FontWeight "normal" - FontAngle "normal" - } - BlockParameterDefaults { - Block { - BlockType Inport - Port "1" - UseBusObject off - BusObject "BusObject" - BusOutputAsStruct off - PortDimensions "-1" - VarSizeSig "Inherit" - SampleTime "-1" - OutMin "[]" - OutMax "[]" - DataType "auto" - OutDataType "fixdt(1,16,0)" - OutScaling "[]" - OutDataTypeStr "Inherit: auto" - LockScale off - SignalType "auto" - SamplingMode "auto" - LatchByDelayingOutsideSignal off - LatchInputForFeedbackSignals off - Interpolate on - } - Block { - BlockType SubSystem - ShowPortLabels "FromPortIcon" - Permissions "ReadWrite" - PermitHierarchicalResolution "All" - TreatAsAtomicUnit off - CheckFcnCallInpInsideContextMsg off - SystemSampleTime "-1" - RTWFcnNameOpts "Auto" - RTWFileNameOpts "Auto" - RTWMemSecFuncInitTerm "Inherit from model" - RTWMemSecFuncExecute "Inherit from model" - RTWMemSecDataConstants "Inherit from model" - RTWMemSecDataInternal "Inherit from model" - RTWMemSecDataParameters "Inherit from model" - SimViewingDevice off - DataTypeOverride "UseLocalSettings" - MinMaxOverflowLogging "UseLocalSettings" - } - } - System { - Name "TableLibrary" - Location [193, 302, 773, 562] - Open on - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - ReportName "simulink-default.rpt" - SIDHighWatermark 8 - Block { - BlockType SubSystem - Name "Tabular Expression" - SID 1 - Ports [1] - Position [70, 32, 235, 98] - CopyFcn "TTdiag Copy" - DeleteFcn "TTdiag Delete" - OpenFcn "TTdiag Open Simulink" - MinAlgLoopOccurrences off - PropExecContextOutsideSubsystem off - RTWSystemCode "Auto" - FunctionWithSeparateData off - Opaque off - RequestExecContextInheritance off - MaskHideContents off - MaskDescription "Table Block" - MaskDisplay "port_label('input',1,'Input');\ntext(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'ce" - "nter')\ncolor('red')\ntext(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center')" - MaskIconFrame on - MaskIconOpaque on - MaskIconRotate "none" - MaskPortRotate "default" - MaskIconUnits "normalized" - System { - Name "Tabular Expression" - Location [433, 447, 931, 747] - Open off - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - Block { - BlockType Inport - Name "In1" - SID 2 - Position [110, 103, 140, 117] - IconDisplay "Port number" - OutDataType "fixdt(1, 16)" - OutScaling "2^0" - } - } - } - } +# MathWorks OPC Text Package +Model { + Version 10.4 + Description "Simulink model saved in R2021b" } +__MWOPC_PACKAGE_BEGIN__ R2021b +__MWOPC_PART_BEGIN__ /[Content_Types].xml + + + + + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /_rels/.rels + + + + + + + + + + + + +__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml + + + library + 2010-04-08T15:30:49Z + elesc + pesaraamarasekera + 2022-05-22T01:18:50Z + 24.0 + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml + + + application/vnd.mathworks.simulink.model + Simulink Model + R2021b + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml + + + 14ca3fb9-c549-4327-959d-be9ebf62328f + + +__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml + + + + 9.11.0.1873467 + R2021b + Update 3 + Feb 03 2022 + 2440358501 + + +__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels + + + + + + + +__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml + + + +

    center

    +

    middle

    +
    + + + + + + + + + +

    1

    +

    off

    +

    Port number

    +

    off

    +

    []

    +

    []

    +

    Inherit: auto

    +

    off

    +

    off

    +

    inherit

    +

    -1

    +

    Inherit

    +

    -1

    +

    auto

    +

    auto

    +

    off

    +

    off

    +

    on

    +
    + +

    FromPortIcon

    +

    ReadWrite

    +

    All

    +

    off

    +

    off

    +

    Sample time

    +

    -1

    +

    Auto

    +

    Auto

    +

    Auto

    +

    void_void

    +

    off

    +

    off

    +

    Inherit from model

    +

    Inherit from model

    +

    Inherit from model

    +

    Inherit from model

    +

    Inherit from model

    +

    off

    +

    UseLocalSettings

    +

    AllNumericTypes

    +

    UseLocalSettings

    +

    off

    +

    off

    +

    NONE

    +

    off

    +

    expression

    +

    update diagram

    +

    off

    +

    off

    +

    on

    +

    off

    +

    off

    +

    off

    +

    0

    +

    off

    +

    off

    +
    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml + + + +

    9d540185-51f6-4fd1-b327-fe0353af8803

    +

    BlockLibrary

    +

    maci64

    + +

    %<Auto>

    +

    %<Auto>

    +

    206975269

    +

    %<AutoIncrement:24.0>

    +
    + +

    none

    +
    + +

    normal

    +
    + +

    warning

    +
    + +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/configSet0.xml + + + +

    []

    +

    + + +

    []

    +

    +

    []

    +

    0.0

    +

    10.0

    +

    auto

    +

    on

    +

    auto

    +

    auto

    +

    5

    +

    auto

    +

    10*128*eps

    +

    1000

    +

    4

    +

    1

    +

    auto

    +

    auto

    +

    1

    +

    1e-3

    +

    on

    +

    off

    +

    off

    +

    ode45

    +

    auto

    +

    auto

    +

    DisableAll

    +

    UseLocalSettings

    +

    Nonadaptive

    +

    TrustRegion

    +

    off

    +

    off

    +

    Fast

    +

    off

    +

    off

    +

    Unconstrained

    +

    Whenever possible

    +

    []

    +

    off

    +

    off

    +

    ode3

    +
    + +

    []

    +

    +

    []

    +

    1

    +

    [t, u]

    +

    xFinal

    +

    xInitial

    +

    on

    +

    1000

    +

    off

    +

    off

    +

    off

    +

    off

    +

    Array

    +

    ModelDataLogs

    +

    on

    +

    off

    +

    on

    +

    on

    +

    off

    +

    on

    +

    off

    +

    streamout

    +

    on

    +

    off

    +

    xout

    +

    tout

    +

    yout

    +

    logsout

    +

    dsmout

    +

    RefineOutputTimes

    +

    []

    +

    out

    +

    1

    +

    off

    +

    timeseries

    +

    out.mat

    +

    [-inf, inf]

    +
    + + + BooleansAsBitfields + PassReuseOutputArgsAs + PassReuseOutputArgsThreshold + ZeroExternalMemoryAtStartup + ZeroInternalMemoryAtStartup + OptimizeModelRefInitCode + NoFixptDivByZeroProtection + UseSpecifiedMinMax + EfficientTunableParamExpr + +

    +

    []

    +

    on

    +

    on

    +

    on

    +

    Tunable

    +

    off

    +

    off

    +

    off

    +

    off

    +

    double

    +

    off

    +

    off

    +

    on

    +

    on

    +

    off

    +

    off

    +

    on

    +

    off

    +

    +

    on

    +

    off

    +

    uint_T

    +

    Same as modeled

    +

    on

    +

    64

    +

    Structure reference

    +

    12

    +

    2147483647

    +

    on

    +

    5

    +

    off

    +

    off

    +

    Native Integer

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    on

    +

    inf

    +

    Inherit from target

    +

    on

    +

    off

    +

    off

    +

    off

    +

    on

    +

    on

    +

    off

    +

    off

    +

    level2

    +

    Balanced

    +

    on

    +

    off

    +

    off

    +

    GradualUnderflow

    +

    off

    +
    + + + UseOnlyExistingSharedCode + +

    +

    []

    +

    error

    +

    none

    +

    none

    +

    none

    +

    error

    +

    none

    +

    UseLocalSettings

    +

    UseLocalSettings

    +

    UseLocalSettings

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    on

    +

    Classic

    +

    none

    +

    off

    +

    UseLocalSettings

    +

    warning

    +

    warning

    +

    none

    +

    error

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    error

    +

    error

    +

    error

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    warning

    +

    error

    +

    error

    +

    none

    +

    warning

    +

    warning

    +

    none

    +

    none

    +

    none

    +

    none

    +

    none

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    warning

    +

    warning

    +

    error

    +

    none

    +

    error

    +

    none

    +

    warning

    +

    warning

    +

    UseLocalSettings

    +

    on

    +

    off

    +

    none

    +

    error

    +

    none

    +

    none

    +

    warning

    +

    warning

    +

    none

    +

    warning

    +

    error

    +

    warning

    +

    warning

    +

    error

    +

    none

    +

    warning

    +

    none

    +

    warning

    +

    ErrorLevel1

    +

    WarnAndRepair

    +

    none

    +

    warning

    +

    warning

    +

    error

    +

    error

    +

    none

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    warning

    +

    error

    +

    warning

    +

    warning

    +

    none

    +

    warning

    +

    warning

    +

    all

    +

    warning

    +

    on

    +

    warning

    +

    warning

    +

    off

    +

    +

    none

    +

    off

    +

    warning

    +

    none

    +
    + +

    []

    +

    +

    []

    +

    8

    +

    16

    +

    32

    +

    32

    +

    64

    +

    32

    +

    64

    +

    32

    +

    32

    +

    32

    +

    Char

    +

    None

    +

    Undefined

    +

    Unspecified

    +

    32

    +

    on

    +

    off

    +

    32-bit Generic

    +

    8

    +

    16

    +

    32

    +

    32

    +

    64

    +

    32

    +

    64

    +

    32

    +

    32

    +

    32

    +

    Char

    +

    None

    +

    on

    +

    off

    +

    Undefined

    +

    Unspecified

    +

    32

    +

    32

    +

    32

    +

    Specified

    +

    off

    +

    on

    +

    on

    +

    on

    +

    EmbeddedCoderHSP

    +
    + +

    []

    +

    +

    []

    +

    IfOutOfDateOrStructuralChange

    +

    on

    +

    error

    +

    off

    +

    on

    +

    None

    +

    Multi

    +

    Infer from blocks in model

    +

    +

    on

    +

    off

    +

    off

    +

    off

    +
    + +

    []

    +

    +

    []

    +

    +

    +

    +

    +

    []

    +

    +

    +

    +

    +

    +

    +

    on

    +

    on

    +

    on

    +

    off

    +

    on

    +

    off

    +

    off

    +

    off

    +

    on

    +

    50

    +

    on

    +

    on

    +

    on

    +

    65536

    +

    off

    +

    []

    +

    NotSpecified

    +

    UseInterfaceOnly

    +

    off

    +

    None

    +

    +

    generic

    +

    C

    +

    off

    +

    200

    +

    1024

    +

    off

    +

    +

    +

    mkl-dnn

    +

    on

    +
    + + + IncludeHyperlinkInReport + GenerateTraceInfo + GenerateTraceReport + GenerateTraceReportSl + GenerateTraceReportSf + GenerateTraceReportEml + PortableWordSizes + GenerateWebview + GenerateCodeMetricsReport + GenerateCodeReplacementReport + GenerateMissedCodeReplacementReport + GenerateErtSFunction + CreateSILPILBlock + CodeExecutionProfiling + CodeProfilingSaveOptions + CodeProfilingInstrumentation + CodeStackProfiling + +

    +

    grt.tlc

    +

    None

    +

    off

    +

    off

    +

    +

    off

    +

    make_rtw

    +

    on

    +

    off

    +

    +

    grt_default_tmf

    +

    +

    off

    +

    on

    +

    off

    +

    []

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    +

    +

    +

    +

    +

    +

    +

    +

    +

    +

    +

    Automatically locate an installed toolchain

    +

    Faster Builds

    +

    []

    +

    off

    +

    off

    +

    off

    +

    None

    +

    off

    +

    executionProfile

    +

    SummaryOnly

    +

    off

    +

    off

    +

    C

    +

    None

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    []

    +

    +

    Off

    +

    1024

    +

    +

    -1

    +

    discrete

    +

    200

    +

    off

    +

    1024

    +

    on

    +

    on

    +

    on

    +

    off

    +

    3.5

    +

    +

    +

    0

    +

    none

    +

    on

    +

    19.05

    +

    unspecified

    + + + + IgnoreCustomStorageClasses + IgnoreTestpoints + InsertBlockDesc + SFDataObjDesc + SimulinkDataObjDesc + DefineNamingRule + SignalNamingRule + ParamNamingRule + InlinedPrmAccess + CustomSymbolStr + CustomSymbolStrGlobalVar + CustomSymbolStrType + CustomSymbolStrField + CustomSymbolStrFcn + CustomSymbolStrFcnArg + CustomSymbolStrBlkIO + CustomSymbolStrTmpVar + CustomSymbolStrMacro + ReqsInCode + BlockCommentType + InsertPolySpaceComments + MATLABFcnDesc + InternalIdentifier + CustomSymbolStrModelFcn + CustomSymbolStrUtil + CustomSymbolStrEmxType + CustomSymbolStrEmxFcn + CustomUserTokenString + +

    +

    []

    +

    +

    off

    +

    on

    +

    Auto

    +

    on

    +

    off

    +

    31

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    1

    +

    8

    +

    $R$N$M

    +

    $N$R$M_T

    +

    $N$M

    +

    $R$N$M$F

    +

    $R$N

    +

    rt$I$N$M

    +

    rtb_$N$M

    +

    $N$M

    +

    $R$N$M

    +

    $N$C

    +

    emxArray_$M$N

    +

    emx$M$N

    +

    +

    +

    None

    +

    +

    None

    +

    +

    None

    +

    +

    off

    +

    off

    +

    on

    +

    BlockPathComment

    +

    on

    +

    off

    +

    off

    +

    +

    Shortened

    +

    Literals

    +

    off

    +

    off

    +

    []

    +

    error

    +
    + + + GeneratePreprocessorConditionals + IncludeMdlTerminateFcn + RemoveResetFunc + SuppressErrorStatus + ERTCustomFileBanners + GenerateSampleERTMain + GenerateTestInterfaces + ModelStepFunctionPrototypeControlCompliant + CPPClassGenCompliant + PortableWordSizes + PurelyIntegerCode + PreserveStateflowLocalDataDimensions + SupportComplex + SupportAbsoluteTime + SupportContinuousTime + SupportNonInlinedSFcns + GenerateAllocFcn + ExistingSharedCode + ParenthesesLevel + ERTMultiwordTypeDef + MultiwordTypeDef + RemoveDisableFunc + +

    +

    []

    +

    ansi_tfl_table_tmw.mat

    +

    +

    +

    NOT IN USE

    +

    C89/C90 (ANSI)

    +

    None

    +

    Auto

    +

    System defined

    +

    2048

    +

    256

    +

    on

    +

    off

    +

    +

    off

    +

    off

    +

    on

    +

    on

    +

    on

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    off

    +

    Auto

    +

    off

    +

    on

    +

    rt_

    +

    on

    +

    Nonreusable function

    +

    off

    +

    on

    +

    on

    +

    on

    +

    on

    +

    off

    +

    off

    +

    off

    +

    Nominal

    +

    Nominal

    +

    Simulink.SoftwareTarget.GRTCustomization

    +

    off

    +

    on

    +

    off

    +

    off

    +

    on

    +

    off

    +

    on

    +

    on

    +

    []

    +

    []

    +

    1,2,3,4,...

    +

    Size,Breakpoints,Table

    +

    Size,Breakpoints,Table

    +

    Column-major

    +

    error

    +

    $R$E

    +

    $R$E

    +

    $R_data

    + + None + +

    off

    +

    off

    +

    off

    +

    off

    +

    1000000

    +

    0

    +

    ext_comm

    +

    +

    Level1

    +

    off

    +

    off

    +

    off

    +

    off

    +

    off

    +

    Error

    +
    +
    +
    + +

    []

    +

    Simulink Coverage Configuration Component

    +

    []

    +

    Simulink Coverage

    +

    off

    +

    EntireSystem

    +

    on

    +

    off

    +

    /

    +

    covdata

    +

    +

    dw

    +

    +

    +

    off

    +

    on

    +

    on

    +

    on

    +

    on

    +

    covCumulativeData

    +

    off

    +

    on

    +

    slcov_output/$ModelName$

    +

    $ModelName$_cvdata

    +

    on

    +

    off

    +

    +

    off

    +

    on

    +

    1e-05

    +

    0.01

    +

    off

    +

    0

    +

    0

    +

    Masking

    +
    +
    +

    Configuration

    +

    Solver

    +

    [ 200, 74, 1080, 704 ]

    +

    +

    +
    + +__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml + + + Configuration + + +__MWOPC_PART_BEGIN__ /simulink/libraryBrowser/_rels/slLibraryBrowser.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/libraryBrowser/slLibraryBrowser.xml +Tabular ExpressionTable Block$bdroot/Tabular ExpressionTTdiag Open Simulink070 32 235 98Tabular@20@Expression.svgsignal.in_signal:1SubSystem +__MWOPC_PART_BEGIN__ /simulink/libraryBrowser/Tabular@20@Expression.svg +InputTabular ExpressionNot Checked + +__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml + + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels + + + + + +__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml + + +

    [395, 327, 933, 805]

    +

    [0.000000, 0.000000, 0.000000, 0.000000]

    +

    off

    +

    Deduce

    +

    Simulink

    + +

    [110, 103, 140, 117]

    +

    -1

    +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml + + +

    [155, 182, 775, 620]

    +

    [0.000000, 0.000000, 0.000000, 0.000000]

    +

    off

    +

    Deduce

    +

    simulink-default.rpt

    +

    8

    +

    Simulink

    + +

    [1]

    +

    [70, 32, 235, 98]

    +

    -1

    +

    TTdiag Copy

    +

    TTdiag Delete

    +

    TTdiag Open Simulink

    +

    off

    + + port_label('input',1,'Input'); +text(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'center') +color('red') +text(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center') + Table Block + + +
    +
    + +__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml + + + +

    []

    +

    +

    +
    + +__MWOPC_PACKAGE_END__ diff --git a/TableLibrary.mdl.r2010a b/TableLibrary.mdl.r2010a new file mode 100644 index 0000000..810af97 --- /dev/null +++ b/TableLibrary.mdl.r2010a @@ -0,0 +1,679 @@ +Library { + Name "TableLibrary" + Version 7.5 + MdlSubVersion 0 + SavedCharacterEncoding "UTF-8" + LibraryType "BlockLibrary" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + MaxMDLFileLineLength 120 + Created "Thu Apr 8 11:30:49 2010" + Creator "elesc" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%" + LastModifiedBy "colin" + ModifiedDateFormat "%" + LastModifiedDate "Tue Sep 21 13:08:03 2010" + RTWModifiedTimeStamp 206975269 + ModelVersionFormat "1.%" + ConfigurationManager "None" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + RecordCoverage off + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.10.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.10.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.10.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints on + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Array" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.10.0" + Array { + Type "Cell" + Dimension 7 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + EnforceIntegerDowncast on + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.10.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + SolverPrmCheckMsg "warning" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + StrictBusMsg "Warning" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.10.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.10.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.10.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.10.0" + Array { + Type "Cell" + Dimension 6 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.10.0" + Array { + Type "Cell" + Dimension 19 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "SFDataObjDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + SimulinkBlockComments on + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.10.0" + Array { + Type "Cell" + Dimension 17 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "CombineOutputUpdateFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "CPPClassGenCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "SupportNonFinite" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "PortableWordSizes" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + TargetFunctionLibrary "ANSI_C" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTCodeCoverageTool "None" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] " + } + PropName "ConfigurationSets" + } + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Inport + Port "1" + UseBusObject off + BusObject "BusObject" + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + DataType "auto" + OutDataType "fixdt(1,16,0)" + OutScaling "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + MinMaxOverflowLogging "UseLocalSettings" + } + } + System { + Name "TableLibrary" + Location [193, 302, 773, 562] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark 8 + Block { + BlockType SubSystem + Name "Tabular Expression" + SID 1 + Ports [1] + Position [70, 32, 235, 98] + CopyFcn "TTdiag Copy" + DeleteFcn "TTdiag Delete" + OpenFcn "TTdiag Open Simulink" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskDescription "Table Block" + MaskDisplay "port_label('input',1,'Input');\ntext(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'ce" + "nter')\ncolor('red')\ntext(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center')" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "Tabular Expression" + Location [433, 447, 931, 747] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "In1" + SID 2 + Position [110, 103, 140, 117] + IconDisplay "Port number" + OutDataType "fixdt(1, 16)" + OutScaling "2^0" + } + } + } + } +} diff --git a/untitled1.slx b/untitled1.slx index cfcd5d8df75a07fd887cf591b4a50b9288718348..8d1da3e040d6538399728da1317d358859e411a9 100644 GIT binary patch delta 43959 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 E1NrpI3jhEB delta 19147 zcmY(KLv$`o)3syU=80|Fw(aD^cJA1=?GxL!ZQC~g=lf^xpa;ErR9#)WSMRQCwjFHz z1q4@71{4ep2nY!3zd;N{Ni>x^4-5oE^4}CSO&=8)1JIl@ZMVsY6nyIk6S&$}xFCXz zmg*diN|d%@x!_z+u7P6o6HrY0c`dVEV>7CD!FnM#G&92?ldy2)R*mi{L|DuQ-aX?a zJ?B7ETmkcO_-^DQA{A~3MrmD_j|-Q)B`=Y58Z#)U+zJg|ZQ^2p1=}SKPuz$gSDCzG z9d30_132+#C=h<3niXKNlM_W9t$)s6L?%wcPOVc;*t(Xk_7>{rBI6oLj_JlqAZzWY z_ruxU*)8}ud$>knF@A)97i6wX<1xy-q21w2W2qrEAtw?A{b@vHeJw(8*YDDxU^QJS)6G@AU@)w3-?K=Y)l^FvH21yx^FF{ z(3w34-_!QnLtp-R&+ik6^+mw{J2w&ZFG-xQl-~ek)bFj`EgY<4>N8;jMwMk;C+KM$ zS2gf8xo5+;Zk&+o4OujEB{{QO6+vwKHeJgF#ciY>D~g}gvLYD4wi=`@idd{^p8 z3_QQ#>jJTxX92Cj%%9?<%Fp>2)&chYHyF9K7f1p8Z;(bPkY-?*5Z>@8{r{3(4VE+t zN)4z^9=97{L=$`U2|4yXoRhK@Gn^MP?k^2t^NKM*iCT-bS&Z+kEl7rAO%bGZu63GC zFfn6YAItVBs2Bbhjt~@&qFR3YlN%omEDrcp@8`EW=JLSMOKiuuh;m&Adz4T7dV9IBiWaNDn za(k=B%?%WK0z*z3(LIhIhkiycn-Oss!l_bdO|y>r{Bv7XO4>Yd@0z7$Q#2(B^)al( z%LF?ZY2~?*=WhtwvX!_&w2Ld~T|!9GO_PCkBv%!=Q>^!Ogu^-2HUCJ+0CD#Oj#qtqZU!4hO_@3_PBO$nbfDecn9;kXh4AeqVs*RFf143kLRdg@T5 zjX`Ug9}3uXB#_%@LlSN1+r@2|SF|vjU}uVV!;Jo2(ujeM$XB4N`^rI74Q}`yMWL=_ zY_Obx)9x3|2~>}5(XEDfXBC+f0)iAKnH125I@hbawJ+E@f_-=jUHOqME6Oy!M{W=s zZ6M)+p?xn+^4k9k3@^zKn)$!LCjSl!!il~9z!dn>@NnKkfWrIWY-7av>hQTjfKs->x%F&b&?XK5`vR2DRw70r+87nNas8|Bs zRHwSCr5hMNNtmRmK(9W}e9O~xT_ioxy5RRhIkk_1ZIs?LrzxR;lfs-gSJwCj`CmaC z#q=LHOA3Ku1sKjuL1-45E6_7>7u{E<@`#K77FU~mzFy@IGt^ z__L>=VMh)^y%VL=QY)FCnKi;-jB%t!2CgUzhRPep_fB;uQwIB^9Bryh8 zz+G3Vftd`t^;JOQ6KA)jWU5@ob__)}@X-NND7nON0W`H0WgM-s%IA@vQ^9fRmdk2* zf&z`o1A^)xMvbC-we;7M0;BMQI1A`3?dS(`m=h&bVpJDdjaV)@(*#EBFT+l6G=ij? z8jby(W?wszm0(Mj%CaXxF3=QY=oTP}WP@lhdpbk24-qFWuWtMrg*{Qoq>!eA-po;V z<0*;n^$z%kdq2EqAC)e20}3*gZ}=fz@~t+RDt$*XaXQ@?daCo=`1CH`VdWYhd%kY( zG+u&ki{awMT_;oi#d>)T!4kNk=nvt zs0#id35wNF<`+~v?L;KciP-of{Ye%qCKV$>iVRK_OwT#>wOH{$7=U z`Mn1JJ3SMPC>A3gV8(G5lL*`M(XiI>q2l?B|)ZWg?jyu?F7(T)nbKvY?A^eM0m*qAb1pj63SQ_{6TV&Wk~|{0=mWwCW;j} zAv%+7Bd2&m=FW!`3Y&4i4f+WrX)Cz%{U!LgE%*f>z~{{!@gVZxZt2vQTeTxD*i?*I zJE7}QTZ-vk?Z7UJgyLAF`kOnL#$a`3OuFpysJU3_f&{YOego_^BxGUO#*l{D8L4qb zu;vr)~p*=wbvxXAe69FLTC{FWqt ze&oE~PiHw?k9Z&5+=P=Cq7evqDgBNoazNn+6zr6vqU+B^2=SU&o?nG3Y`cAZySlmx zn+MJ0qoL~iap|wpw(D3lyQ%$`Mjp)YvPlxli9E@~AumM~S z^ZybPNr+$~eY#$Hm^Es;2uk&SR!6-m=6)5I7J|s*q6<^+BTSlupY{wa+*j+3A^;@H>}(J|FU0&zlWI=JBj-nV zzIZ=yAH0}$1st~}A1^Mv0LQTEDj7^qpEz`=%WKKxGkZAQP+G)v!l*s+;)(*=LXY6d zZ>8ozH?2#@0UUiLb^hX=SGICF26ID-1kFUOOcyO-VM2(YdoLxJ+mk!YmQa7haDzVu z116u~^8i?1a7U5moyki_H+}u%`atS5BVAqHQUZdKVtCT}zWjefd2y}6$XwbAh~t|h zaHTltx?L_2gE#RJgTTi*0eE@@8+%K3A9o)hX23-Z-{PV>zI}qax_B0^e$U;3?(J@9 zul=DWTz{k6vtKLwQ(6|r0YC4jemr(BtJ_!cV*m(N6Mb3+hFT~Lz`AW6GXoEg_b441 zDJU$6vzYpdO%t%ue+zTfGaH}!38CrfH4xS`r?0oWrow9k08ciPk5z`&9-qN8joPsU zpS$X4SmvR=6ll5)&VD~v*JazPirj}R`PZ_Tr7Sg7)wY1iWkl2nQ5J(;X;$k^F$oC^ zz|W%+_M_g2msIY)jfOU$d$+2#)417TBo z27~V0$NM8i$BW@8rYGuy_wC8`ra_?x?esKi{N+*??RB~F(uuN*%@vR&1^$xg!yG(g z+6MA&8j(kY{VqmBSli2Sr_#hCgmiT&fI2m?*rwF?vOj7DZx=Uf`>yiS6N(HgwA)yJ z+Uxm3Q$|MSGy2x2YC`$dbW&y~iNbm0jxsV=rYJ_k7gh#otJ=nNh~3V-ZDrG`lC89N zW)%9h{PaYL{~RnK-5ExlpP%2${l-P*YH(slcLAS-)0RHwA(u~Qscp-qsJQqKfHk{t zFDI751J#X=cE8_qg|oE_3Sp+8>6YX=C2@CAl~#zcsHn(WEXlUf-UC4|A(fq*%3Rbg z4s)<5iH8S%$xXfIZDmtgXg+mS&MDw8<4L10-n_r&n1P*ns=LR}g-@D_Mj6z}e#grt zj}KO}qPk3t%Zf$Xda3A`zK;ubB&nlV6e+V6Uq@qX}?5 z*|2C!Ph2qcTC>sKo5L}(emGwKVf@(AOGcNxpE40!2F5nw>$dD#om^DLck>>XN>oom z2h%Iqt95`yO@h39^tHWP^zos$x+oAyNfbr;Kx|Y}QW}Rl8PT1^H0w2}m6T6brdj6< zX8e1PQ?INnEPdfUXxbzS2>VML-V{?`zj8+@!<`J`6?v$Oh zd@BgOL2Cls`93y#?f$62Uz6f)vwOO;PO08< zp|2$_zue@K!A%~XRf+vlDV);M+}z&i)>54nNc{k>@&IZnQuhxY0J6zrU3~P>S@lG z5Y=dW-OD+iUrZ!~aWMgpY*{tOys%jO{NZx6a?}|pbRpve7~qhbCx2)UA@NdDW$nWg>M~&aa$yK9U57I&l#jyFGU!PD?2)B=N{Xh7eNT z>@qMgAe@6L-7T^k!hZ&DkKR?SHuBq_Z$lK!H&3q{H74iMfv>w&_-jhfRtXRM)%25F zsF>BoD^K*~6u`Sr)3AhjTRrNtheBexl--;S4VK67)`XC$}oRZ=uSox4ng6gBN8PlO^iN?FT zde}yh1n~onF*(=D^8UP=bFTr30uSppjczTi=+}~6;WVr_KjzTho-blNa%A#B(757& zT4EvRY_?Wh8)HAwrO+^9^WuXh5<#elE26RkQpGVHtp2Ik!lHq|uC6rslSS8K$czvt zb-EaArx)d8sJbj9f7x}aOxyzJu4@vE-Y|1)e@5L>6|wW~z^~fEwLkuMofUuW)S}%2 zJ0)aL!U5^^`l>hr!`=ZkCsOJi0KSGIP~jinsWd)8OMAPm*0!0276EEK2P)}e(a>Q<6FPOv19=WYo$I94gHZ>C4DrDojcy1ALC;UZ%jgohJ7fXq=T*bbEgdteH>Bs1tuEK?O>DAIaON z!~;A#nzw4|rJ$Na2Lm}ou#JKcDAqOrz#Q*I1JK1}&;-0m<(PwYSQGOgmM*V9->p48 zJwG}$2w>aUiS5Ee-OK~2+!O6PEngSqGL$AgK&MO|d^aXzE3=eCvywf7b8aq*CLG4cwnY__fol8? z&;2=7pfvr$KRtAC#n}dYO`X3|1oN%^?Cn#cifk;-+RN+`U+gn*=4NKyy(dp!p`&qA zORB(1Oib>AYIoCJb%o~{#Bg&Kh}V;Rq1F>4$KYx~9cjp9T(ojPK1bDnWvZ^Hz$Vvc zeCSE1acXU6N|s_7at{j$#gcW#X!oTC$Vh1P19cc5W=U#LmL7uXg%7`MuaDb`0{5o2;M9YCDA zqsJ4QN}2hYfK(_A`-gE+c6#cG&(>{cqpzj4H3U!b(Q`c7yTi6VkTp>*W>hbK>h26z zpEN}DTs+9M)8F01vXr9g^_r~=EWZc{|6H%6bmuOor>JFxif0Lc6>c^iTE8JZ!d})exH8g_m57?0Qp_sm zC?KS77s&;6FS8qE&o0?2u8P3ci6|K~NKfE$FO+0?%I$1hmNFo`)RSBDhS{4!*)_VE zvxS=dsW99Q_pX^n%dt4DfmYp$a>1;{-nA0Dl-S>qgWJBi{s{-_G=c6~kYq&=xE;hC8o*MD+18-!<65^ONe zC?(|I_4j!SiJyy5oY_Pm=|HC-)`|j6Zra3#Aum}9s!t%fd5wbL;Wd0f8yS^*9mtZk z`X2y5{}r#tt>(C&3lek7bzS@Z=>6@9EY=5i=r(Z)>eEiM`jTH*dyEGx<#0J24o6{P zSh8~4bM8ZI;}4Y(o>}c`dvZLaaMEG&G2Dg(Fner@u{A4krf-t3?$nS^@At1S9U(P; z`!l|utWv#X1@V`-#Q+P=QB>YmSrQ%{iLwEZaev9>fEN7!6|kS#4V=!TjIrAL=1Mc5 z84(mw9I61_OcIx${C%>seFo3)S}3-gQp>87h$HAG1t-GbIA_QN7RJ&~r^zAJV z)-1id?z2VO5s=wD^U*1P!nXG%4w(TMidiz#lamqgqCOw6c5L&Xa#(ZiHWoIxMURk` z>2!6UfEr#f2-<%>9kNL8Hm=m$U@}pW7&`fL_LFk1ule$sFh%IhQDi=DZ_!<$Gev?tU4`G081WR1}J78%9dfVXDFoDgCeyjoJ*hJB% zlH1$&bJIHEgg8H*TawR3<$5Wdxz&<1b-rqe9 z=NQRgGu@nWweos>_Q7|*PxA)<{?&jpE{_Ptx{Mf5n}&<2J1H?Q#gu;ka8-E?SXgHH zJY?glsDBB=fttL?h6sNE9m4{68)RI6+D{#0`Lc|^=;O3<5tX-frGN_1ZQQ)cVh4W6 zXmhy*SQ-$1y)Ol$PMF5Gex3N+8u>d+{(fI03Z?kVQ_$oMbU)7@md1UiKo$rS@6lSb zV+>au37pnUUvCa**KJu{p~rUTu&JQ5_c0!?HouPJaCD7I>zK?STlfIh?Ks4ZY=$?E z9~(&xjY}aQAf9(3KINQ*9Nv$&QS3(VTC*{K%aeKLqUBFYw6(Of4im!1vi|mE$!KY0 zZS{QPfyL{MI^qgKl;x!cq%EBP1malg^tm5P9pWi^h!lXg5GADH;NeY8HY11zTwa(? zj!5)_6g5fjbNc#zHxB}6M6m7h9g^sJuQqAtz}s4 zK^@wE7I)?QWP!W-l~_Hk`oHJ?E!KvZYR=+_zG~wJQIK$s+YkvZoO-RHsM)@9D3yYZ z?RYbPDYi8nfp&fl6@_mY;gIc(Cs8a5{foukV6N}$08OWUpaTWGieJHYXO~GL3@ z|GS<&)&le>NP_?{qXeSIkU^YiDRmOeSRiXaK0iM{=5&t~+dgyg=DiMdmUnY&<`LUq zRI7)qK>({g)l~ULdIrMM^<@8o}f@L5YRU{0$s z3uW?}ruz%8_Uc8laQuKBlr-OR^2w3SU2k5(UY$hZrS|*^p*BI2WBPmIC1-mdEL=F1kz1RxE#nq7A3 ziu%{RfaU;B)k)x}rH*{S@P62Drkb<1R@nvP>LOR!IEJ}Z>^!s)d2WLUa8sVFBV7YC zvcH1|k5&EbK;HW8pHe}Y9f#lf!*sfq!QDU|roms*DZY4J_N-86e~fw7A$~m<`7NNl z6yXtilU$_^e!;n4>4Cd1R~&!>^|j>1@=rS$41)kVcniBd-Mgz}&~mI9vSQ_+=!B;q zT0k&m+VcAnL(z*e?ry?&eNv*m9`m4h3V>LMjeUQKo zo0kyyM-jz>hu@?U^IUiO)c^-2Nct7Bc zip`{d0_@K>hq0CDIWWB%c0pMlZ4PB&vbiZHWS{m>aHV}aELIVqN99Z~OFbJqBt$9)xGG7Wj2Z=bx zqE4`1xu?6m$>HDK5#AFg{<{IKR|s-avCpM#e^h-ZUdvTlA>+dv)sCbBgEpnjXxWZ> z=J_V&fIfJV{ECH!_~T6|yw3Ie+Z$1UO{oI!F%`s27TqbrJyd-{6WCN-zh+2>Hh||QkA6(~nZ2-JRJl-xkGSaxTL8Ic+AU)jmHcQb=!eS|n5*+A+t;DI4&JI}f zsA1DlxXC&gkx+Ifmv8g_TBo&sW}C-h1uVu6LYV?p zwXUta906#y&0tpr#y?3S#r)5oBR_!G#Q9EAwR3G-2u5A}!FHFIfvm_Nfi5=wdC;$a z@lW{}F&8O)e4IZ~Qf9hL%nBiaXn6&2#4n%7U~X|shS%pZHe{l2h{+!*H@=T+*VD7G zVwcRWSHTLk9p^H>l^P$)LBLX(T>SJ&`??~8<$&n90=1R+?(XEJip{t2QXPQE(dM*6 zm19`0oD2BRT%!dfbNDBCMZT$ut59=&5Z4l9xiL`N3_uLL92J6-@^phHa06m01|J)H zUT5S(wz&r~vo40A!LdTf;Kis6no{D+pK-4oxQY+MF!ZyG0+C=GW6Zw6NB6ijv(8lFc~;7%ZAYA=o+qgPbM0Um`1vPl>QMX*nf>s3gbKj(=Z z@r8{w@}Qz3s&;_47Xg%GUK(U-4yJlRoDIp{9u4Z-KvfxHz>?EhLE@xpGBPta@J#|T z6YG3%eJTB1AvA#%*E%m(yXpyxMN%OF~B=vq|* zzSWbr<7Ww^G(^Y@8A~5U&Z_gWv8@mL8w01ByG+}f!Dh0rX8>hB(hbhQ^TcY`vhoec zL3Y4Rh4s_q#mmI(ytEHt*<8nhtmZy_5T_D&DWyFgm-71 z!vd$D#vy7QZA18zS{rzH!j+>(Kn$;9N(xO4_yq2FbQw zl?-U+vmzQt$laIz)aZ4t`%8t%x&7rdZ$NUu$$G&(=@W+UGd3o^{ zcN_1pcZLb$jc>3fVpuG`%F3$Rrv4Lgg zcT2YZb|k>Imgzak<@cS7`FwIV<-@V>pL$J7r@RGm`0bxhdthC?PYoE_;*v`)e!J7% z>GtWB*#b6MUphLvmrA?D=4j zynSXm9B1_xc0yjtsD>o_bYXChZOE&XZnPVDdwD>1hbxA=p#I&4J9une7_E_AAsK_6 zBXOBKa0xdJSzlgltOPkYB7wi`(Qh0G|3@C6Ms*za0Wn**UTsS=PP>&*9!xnP z1{=`#ASEf2mP7#;6SK~v+TxbIWV2e-B`kd0M*vkBwq=0C@9fy0zs779zKJ-}ojiQc z)Q0xP(%SQt?({W+gn4r|Ut}(5cLv>1dHir!`{+bBQPnCDHBob5LkQrO1V_Z=a`~H% zByL!H|0*$7!_^Rx_j*4OjByry+nAD>@C;}Lx>Q(dz?>f%-t12}eKz<8`m~Rjpfv34 zgA{B$9h}51*9bsf+T7W3vrC;yQx~;OPHaKOV%4uPK{=6*h*Lo=RjJz)S zYK}#7%IrP9deqa?^Y_tIk$m@jaSU*qHYSKZa2#?n^#H%~G<`U`jRy9g+XK~$p+DIk z-JJshd_yUHTpSU)%K$of1P@fVo-Eh zU4x`2(;=@BJTFz~auRsj6POY=cC`r%v1vd) zI3^S`VjLxha{q(KHr?^Jb2cG)$pEJwgfGQZ-rksYfKSsNZ{QGP^hamm7*%u>#X;*aPj*`)9HDOz8J$T-TMnOK zozPVCvz5mHxd*E({}K3BJ21y!p7?KR-{CihLkRA}cNfbZBZ$ z(Lu=Ucn%(s%R+8B(%5xxEyP4K#Em2|f7{`W0~U%LhZOCIkN~U-=K4+X$Gf(Gs5`f! zL;6>Qche~Qp}@Q@Qf)qgV^kp5#}fvvR^^AK2Tq+ zZmFJa>6ISu#{{ohX(a$mr zFY^yDB>}!uPDob^n!1Z&o+zNY7=50*$R$wcL6P)8X6%@dpIaeon1B@0O94ElY{5%u z6t40oQTo?K!cML00jD+F<@p{i;`c*+JIw+3S7wG7B31Lz{!wAFf936*%`vUOGNfWQ zKAbZQtN8X+`d~Oc)B<RVYwNNSshSvS|9^#c$wj{e+}{Gl;y#Kg`tf-K?Sm1kTcT zs_X9kxaCV&{IAe)vND$^Ha?7h@tFksk7lyTP~zTKW8u0-cQ;!s?ZSmMSH{_6h$MWr zK>=x93qxwoseZ9Lq~Cb=!LL5?=l_bOLG^Y>P)Fy}o+3H5^3gwtA# zG_Bbv(dQD_-nDUvo4rcy>6&E@Y3(ijPk?e|=qg|O5fiR%M@Xi%+Q!a$4PUBc@|R#9)$-aWJ;{*R?YT<=FYT@A?_vlv|a zt)iz%@DliCjMm>!E{1%&DxKCl6g0e6*zNUpS-6SfR;n(XRGa#gkBM_y+Z;1K6{7a(h#g=$>f;moc>IK&IK;BBj ze-8NK`8$vXVMN9#yY&`tg~O9Pi_b}f=A~S_A}yafB<^&$C3MotNMF=`vfm)3Dj zQM~$F$%N|RU#kVv{205*a4$by_X+CBC_%foGFa+9UM7Qc&YkvAXJUulFd!r{w6fEE zRAD)mQCuJfksB(2ncJewq50Kjeq562LlOD-_GM?K(zz|-oT4;%LD{S;H_7S}U0I@Q z%yG5XE=5)wjZLEfwStljhvcT#tN@rtW^*(lUon19FjFD)?Ih!yrj>}6R=Z{UaphKrt9PpeMLf5R;L5mTe?IAM6ktQgU+ zqv14gT;&|TUeTwUvi5_G++&SW?0$}abgO44Ll)nFD|sI;%7WEd+5x?zzeFC+!aB@h zOPnHTx8SaIU^CxVhg@BkQm^WtHc<&~fG<1u&s32(^g{7r@m`MinPmw0fv}7$>cqlp z%)$je4H*dyzA1KkmMHs{qL--|>{>$oEI5esfQ*a&B07`s2B{kY{8u$@SKHqXDkfcd zfvy#%I_M4M+Ce1JLV&YmSmrCKmYNq&UAFOX5t6pXcL>WP7LxJBvV>b&bs%zm1+M5e zQv%8Nr;lv!!wA=#msipT#2@E5lERFkz_`v}y4O|Nu$uK{j>N{jY}SK1*a{`b1!V8R z$CEqK&%il^$&**eKHztAz0I z6iQ>J7T-Y>38IXv-Nop60sfGbx$${7*XjZ7lSoF7x9q9R0*PMZSf{r8HaRc(hj$wr z|~bY3#sn%9nTB#(*VosO_Hxa3Cknp!V@3Bc?_Qt$4HceoJq8=c9pKH#<% z8-*D>QlZ;xtnIL*`AhwLCMtEMzgNq5zu&~{F!+EeS1lh@#3Tbs+WYmv2a0Z4{ND>P z_+E;Dv;idM&Rou9>9R7$x08Gv#pCb#ygP8`oILJv|7iJ_Lg-&%?ed&zs?(=VVdcnS z7~jKXaDdW-1?__ys0VG*;&Dpt2X^fTKBo0+|ao z%D0KU3f@h--j}FiSS^X6c||KYnaMtEZ84Ej4 zwO4L?Hd~E(nhR4$g{W%iP2##c=W!r#Z>`RY|F5k{IBUPelY2o=IC zJFC@}Ve|tF>~h))^}_xaZ&u)|?J2?^!zpeCEis~6!vsu}dIv4wek^QfT}AiQ(Jp>? zyhu7X>fuSP^(6-djZ)^9M96vF#nW=?nV-GHoM#fR^ByjnP#x9T8 z*_EmN`8KZuk)sWU+3raI9+InYXO_4FE=s`B-wyzQD4v@>* zdW%-Fc0WCB#!kk(b!u-bJ50~2dnAP zYcIaCf0yrcsIrLFxghL(tb=In_Kt?;rXbf?iA6j5jgs>VrRF(A6T;@$%1K&Jo5syl zAV4DpMZowfHF{7i@uh=`>?~7Uq0pZR961=J{W@D>+Sr^^&!x%H$-;PhnbP$!;hrz==yy$*8q@9XezLv<(3tjV$luSleR}HUjOxk)> zEjL$+k!Z0hpEqu?nZ5`%PcMB8QltOOSNSQ(m`kSir%j!XmG)DaI#1$s01TLFPgU_Q zfvDIh4ea%P!ZltRq{kY*Mm3$CNUgR0*7{sg5D-pc>z_Ynd;hb%ylSW;%bwOuX!z~I@P-=#A*8jp14zqL$M7rBq=U{7h@W%Sh9 z778bYO}dP9JFQRybZXN}0n(7GVPnDhCB*GAV{2K9Oq4yw-u+lc7ZjcMu`7BsmXG)T zY5i+EIc}el7~TG*{*KN=f1-047=_u7xZ%jD@Y`+ZSV>W;#6-0Csmc23T>}>Uq=xZd zg?oVuUQ;Xt?9{`XE&MIggXI2h;urVbfGoi==-r`#S-jvTe7{;p2mIGipslS9bxsIN zkkP@Z&4hJplcd_wszOo1PzYzXquB6?{jGVwq-j*Vm#rk!bwUna{~FZY%EZD#T2sKp zPX;U0mYNq=8y>#Z;jj;~dVk0=dbbX8bvzVEp^z7f<0wde+9z?R4-X$(;>Pww$Z$C^ zd!A)ctJ5;wmHD)|9^$ab@5xJau)j z!XWl9OWA`NDj3JWOWoI3jDC9(k8SyTO7N~uvUA3N2`4QUQ>#l>V?k+o-ZJUTk&S+( zAe%vfIHw@JH#0{{02CX0mr7T{C1UInrGjOj zfaB7EKtmQSt*snO{%csn#=`T?2W|hx?)M$Bjce{?+9VHV=JZ_OtGi|!lQV4OF_vqb z=y^ZtaUi@~?p>QiOiD_soFM#tj0>z5;GGNn!zp_pL^Atz;Y0BcGN`%-KKsiHY=vi6 zqtEem*1wBz-OTe!tI)kgh5}wdvu=h8RkFxV}A`5V!_4Debc&0X!qTW3oBGH#R9kUd&Bm__p~eW z%l8C;{|-hDkKaKwJpUvpQ}pq9tHM=60r@rL7H^%f$K>~T5CHmLCc%Tg!7gc2ivlqI ze_&SkDGk_;MDZVbWh1Jv;_GJ1BkOovi(-oBJ*H zd3(IFj$7%(p=i;y^_}JIo&bv*Ru2UdmtJxK~u95QyOn zD08lWb?{rc@qV5T9V2ab7gkt0@&QeB-x&?8O!kcGv=TII<+@ON%#Vgmr+Z9Ef7!8}+{NTy5V?E zX-@GlT;?m6ylKJuI{AcNZJ{GQhzwrbc8>Z7G;xhHq?6#q;*xv1R%4zCfgBaIP4O!< zzPH0ayM*~1hP;S!wwH>Y+p?S-O&``mWja;4^Oq{9ZZ7wBpahqGRfFE(Rs-m>EaQ*( z-D0Z^=cYf`m!WUBX+zZ8($rBQ8c?zpjV|QKvW0L{nYN{93V4~HXRAUCm(s1`%m%RC zc{0zK|ChWpU(EmbhC!V|0Wcl%MX{uSC3XO4NCHGkOBS^ws#UAhVldt*tB3Q|gj@dm zt22ESRWZ%owDgSk&g)tn>Z=R7vkRg$3l&7$qKyey;6!|cr9Wz;CEmV@{cLwU@m+peteN1sU?qmkvm`u zJ_6MRig?LZPrzy~?-y&_qe9TauF(a0t#eBF?zH(-6gO{6gj4k?7CWC@sfCw38K3*| zAps2*Lk~%aM3EoML}GckbNa}ppNLnc_lU*h_M4xBVsL2edo26QT7wiD6_f#Ed#Xp^ z!kiXjH{K(nJE+Hb>6R-DQpd+X?Gx}jWkFpYh!y<4W#z^$yS)M+clX7h;1$@Y)@h(0 zM=?~e$qlORg7MqblUS9ehmF{VaiT98d+BV5r!sdfFVBpnjZAk)cS-b%fONZ&yY>2?v~G_K{_RRzGOkXV^9 z(iauHqzTGMK16T4j3eRiAv?s*uMw0}+K-pXlevi(RIeqnd#lyk9q-i69DFX`>wtzZ zL$~qm=k>Z3JL(J@@uRfFkhqgvo%gFZ!7!tWRaNJKaW6w0w6|m%-v&?`iJ`|{W}2;L zl1pnnP|)N{(Tz9z%%CBA0Rt*w%v%YjYIPxk?Zf|$;S2`;**YSlopgja0Tz6#$Y&}1 zJ)=mM4{jl(MhgT+XX$S;Ld#eH@(mxK_!xcRqc|V+N^jLdct%j*foT{MDNdJ4K;!kz z3D|ahOwG6|!kl5%(ppzeB_v>UXWrWPr2<#&l~%yohK{^EeJjA#ghO`-IIwkNaisa3 zZJr?1YcKyo>+bGtlvqtC0FO}Pj5|#_dZq%%DFpu?68K1y*~;Ks&FBwo&Jh8NS~Roq z_} zXb%h)t<%$(n_6KQp}%l%{W!1y0-lLpL3VXU70cwWy2sxeI?iM zmmt*Af};7G>HEGm`mw>moT1`?yNIeZlG-J3C!$-0SA>QQq*Km#Gx`~}C3oHj_~t8WAXk85j#-Vrk^$V!%o7VQX`(VQqgPj`lrMi`BkCZG{>X!&J=BfnPk9BK zxP}4**F7e&FJlmX{^+XkR?fj{e{BpCzl-S=xC11Z6;RO`;7bfJ{RRJSAD7Kv$wpt< zQ96^jZ44)xSOfpAucpr5Rt_kZ&M%TyFbm=U+a0wGqBPpWi07_cy9V-GFsDH0yk`u~ z)&RMxt**@f_u~I&LXFa*Mcn|bTSLD<39U+(*XSPhV-0Tx@^MyXv|(hh|0|sAJ`#0p zy3pJB1M$r4yHf^0oZI%MHn+^&iP&w~$Y*BAs=pS?WDrXL;ar9??l&pSNPhTnTnzR~ z>A&dF7^pdS9LXZOr3N%T%`Qk#NSdaoE-sW7E7%78R*@8bf!$5zJ0Jq$}&er|7*p zVQk1Ij*!#Ooh$_WVIgxPeM!Gc)oxf*LL;I&h^hRdF%qxS zpzsqeO@e+x*wNNqYs}li;L$6Y{4QtK_zY>K_YN^P%~Y_2XHtmFZ@rw@80;j!^!QjFqKNy)IN^&7;Mbqw>{`qvG$R#{#XO} zww~usVtXqqcl{Cc+a9Vz1i4L-o1AkZNH=Gb=*3XU;h0QbLhxcz$P4i$h)KR&sA5BO z@4;)f-l(|#TXxd)TLHmwUjHcw27h zJ8c7KOg(FZDc~Or@4*txGz;%#Dh%G$X0%AkZJE1!{6Tgo!QWL?zI)x!(A951h|eE0 zNHF>E1V?PG0va6ITYjHlfy8B#!vdG#-Xlr^(^gI0{t-z ztpC@>bw@RoeBnG0fe-;{Nl3x$A_yo&M9Kmp2oj}(5~=H|h!6?AL+qjwiUA)*K_da_ zxRENN^ktQzV(6e4LvJEPAjk&TpS$k)%|CD6x!>IR&VA>dxp&UY_k2e8W?&YxgA$of>Hla2t@{}-a>>m5oNhwP7)q$kM=LcoT#O zXIj;g2h$NS%B5xIJp#fbcqpK8M;0=0{Lx_%k5}mQa0J$<5=v6^O?vgKZq_ZGo~8<} z&2lDRuO1XR7RX6G^=V08hG@#I$_Rx?pdI`wbK<_x@`kx-XpMmTu_LfaH`33AWHfQ$ zP+_f5v()vxNp-dgBfY<&k~!cT3oTExuna5R|-q_mnC*IUylId7(BRp}$lfWaGCyTOi3r zmc?}Ebh&fRS^3W|ogec>4GWfy41P{NdT}JiJ2ZRBshq2K7nJ`NFfqw)3AR*&I)qG@ zw&_f>-PVj_6HrTojWGttLp3-Cz|aaGOMMct(SHGJUyD)kQkK)n`4Z*e98&f62{4Rugl;^g+-Ay^RGM` zM&3$xl`Enz@eP zDf()13X;w7v0L`vP4rXJBdIjc-%#^DoGd=Cl4#2H#96)f=zTCErxjUv0nSjR1v3ZY=V(b; z%0=}~$1IBLw=6dD>Vek#;h5U7&X>*o?IVD2e7!KjVi!zHBjzZ!Bv4h^A@=!uUTziy z{aRCIxeuz!Dl2yhQ&pDWh%j-lF-p{KEo1aUXEF-=a)0s|xQAbyh!u1-yHh#lIAMT1Z)g$V{HRzg-uZ{PZ z%(Z8JBSd^?57=L-Q0#U{m!W}aP%HXqKU$2B3`*orDOjMk&bXeeQ-bk zqfSm_^9PMuXk?P5hjR^`ZS+}FMl;A&9}VjP#yxokr{yA2?=;Q-ck(3hd^+(q)&sla} z?X``rTy$vv<<(HPK~6ZdgF3pBBJlH#(j30230Vx`&c%gWM?;#X&-m+WhR@kRY??s9?8qE)lT7d?WQ;LO>AZxYOhl=gGc^{xh2 zQb=WLAH?OBb}@^fvCZ&#l6GGE@E?!l9Uo7#?V}!PuXz@5qQ%cb)-pcVH}duUV)or-?YbeGqi}$?FYAq`GsA1S{M48H3gDU~pbX$aWhp=h{ap}+hfvx8{SR!mmFl-u1{eZ9&rp7@rAV-?#bQVfg zhsmw?#i=UW#9`~eO`c04JPQiEAp>ahv0)qi0U1CJ{f{^W1S0dd-_6G~?*OD20#t_s z;^_4aIy%qMZ~PDl@^93p-xhspturrAfdiU=A+L)8U%&wszzCd#1BU=pPy+$%N3ZV? zJ>U_y7X0sU$7t%UP82wc;E`9m2%ba&QlL5#P~&6VTYoX*JDmaMA_0xf0v;Sf0@8ey znbfHTEGU5B5&KtV3&H+CtoJ@I*3uwN7C@oblg`bY6Y?LFFMR_wEemMzrDlK6xdg!k z01()i0(3wDvU~%N{$;y~0;JJDW^0>MZ-#`D{~ar~;R3U<+Vbk}NO1@R@dHa(5d^%C S25_P%-dA1Wg-3_6ZvP9|LaLeo -- GitLab From 16dc59f4e7b772ee9d119e23ba6dedd42c71052b Mon Sep 17 00:00:00 2001 From: Pesara Amarasekera Date: Thu, 2 Jun 2022 15:14:48 -0400 Subject: [PATCH 6/8] Added changes --- +TableBlock/set_code.m | 4 +-- .DS_Store | Bin 6148 -> 6148 bytes @GUI/init.m | 68 ++++++++++++++++++++--------------------- @GUI/save_call.m | 2 ++ 4 files changed, 38 insertions(+), 36 deletions(-) diff --git a/+TableBlock/set_code.m b/+TableBlock/set_code.m index 24e425a..ced61ca 100644 --- a/+TableBlock/set_code.m +++ b/+TableBlock/set_code.m @@ -144,7 +144,7 @@ for i=1:size(outports,1) for j=1:size(out_handles,1) if strcmp(get_param(outports(i),'Name'),get_param(out_handles(j),'Name')) % Set the port number so the ports line up properly. - set_param(outports(i), 'Port', get_param(out_handles(j), 'Port')); + %set_param(outports(i), 'Port', get_param(out_handles(j), 'Port')); found = 1; end end @@ -178,7 +178,7 @@ for j = 1:size(out_handles,1) dest_port = sprintf('%s/%d','code',j); % Set the port number so the ports line up properly. - set_param(new_port, 'Port', get_param(out_handles(j), 'Port')); + %set_param(new_port, 'Port', get_param(out_handles(j), 'Port')); try add_line(getfullname(block_handle),dest_port,new_port_num); diff --git a/.DS_Store b/.DS_Store index 9f0bdbdd90a7e8b15800c2f928e76c772c979a2a..b37ff9eb0872e04c3c76a8017834a4d944de0e74 100644 GIT binary patch delta 111 zcmZoMXfc=|&e%S&P;8=}qA)W90|O%ig8&0VPD*idPEvk;&cuzHIv` Date: Thu, 2 Jun 2022 19:18:24 +0000 Subject: [PATCH 7/8] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index b37ff9eb0872e04c3c76a8017834a4d944de0e74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3ME5S#@gMWRVbdB4CPoI)Z*9ntehM03Ou5s19;5|NdZ6tFApjlDa2 zXHVhv0+8AJ>Kd2=n9vpRrOVhfuRgM~h@2C}_Gqi!b9?IhHsT%&Xzc|mZm>qfL4C*Y zE$(r*-;`(YK^FMLBVMs3e~sP8@@>=l%?opyPfG<-fm9$BNCi@X(+WhtoLru!Wi}N^ z1^%G|`h6&L#Tqy`+NXnyjR3@sVKZLaEI}+9AlAUakrA4BDbY(MMhx+C#!K*O;Na-x z5IdRs#K{s9irDFl7o$U}W3H({DsZTP&fc`C_WuR_$o#LIv{WD!_@fF)H($lKkm_GulOIj-M8wz{__n98W -- GitLab From ca64b13a5d13bd5e54db7bad62e001b9b9a4a0e2 Mon Sep 17 00:00:00 2001 From: Pesara Amarasekera Date: Thu, 2 Jun 2022 15:32:29 -0400 Subject: [PATCH 8/8] removed breaking changes locally created --- @GUI/init.m | 2 +- @GUI/textbox_callback.m | 2 +- @RGrid/delete_g1s.m | 36 ------------------------------------ 3 files changed, 2 insertions(+), 38 deletions(-) diff --git a/@GUI/init.m b/@GUI/init.m index 93c3471..1143607 100644 --- a/@GUI/init.m +++ b/@GUI/init.m @@ -15,7 +15,7 @@ elseif object.mode == 0 name = 'Table Tool'; end % main figure -object.fig = uifigure('Units','pixels',... +object.fig = figure('Units','pixels',... 'Position',[0 0 object.fig_width object.fig_height],... 'menubar','none',... 'name','Table Tool',... diff --git a/@GUI/textbox_callback.m b/@GUI/textbox_callback.m index ef2cb29..3379381 100644 --- a/@GUI/textbox_callback.m +++ b/@GUI/textbox_callback.m @@ -51,7 +51,7 @@ if(~isempty(unicode2native(event.Character))) % the findobj function finds java objects contained within a specified % Matlab GUI handle - class(src) + %class(src) %{ java_obj = findjobj(src); java_obj = java_obj.getComponent(0).getComponent(0); diff --git a/@RGrid/delete_g1s.m b/@RGrid/delete_g1s.m index 8f34911..536ea6b 100644 --- a/@RGrid/delete_g1s.m +++ b/@RGrid/delete_g1s.m @@ -12,46 +12,10 @@ function [] = delete_g1s(object,cell) deleted = []; for i=1:size(object.Cells,2) if (object.Cells(i).Cell1 == cell) - %[deleted i] %Check this one first deleted = [deleted i]; - %deleted end end if(~isempty(deleted)) - - %sprintf("Res: %s\n", object.Cells(deleted).result_text) - %object.Cells(deleted).result - %{ - for i=1:size(object.Cells,2) - if(object.Cells(i)) - delete(object.Cells(i).result) - end - end - %} - class(object) - class(object.Cells(deleted)) - object.Cells() - object.Cells(deleted) - %Extract field names - fn = fieldnames(object.Cells(deleted)) - class(deleted) - %{ - for i=1:numel(fn) - object.Cells(deleted).(fn{i}) - if (isobject(object.Cells(deleted).(fn{i}))) - delete(object.Cells(deleted).(fn{i})); - object.Cells(deleted).fn{i} = []; - end - end - %} - %{ - for i=1:size(object.Cells(deleted).result) - ishandle(object.Cells(deleted).result(i)); - end - %} - isjava([object.Cells(deleted).result]) - isa([object.Cells(deleted).result],'matlab.ui.control.UIControl') - class([object.Cells(deleted).result]) delete([object.Cells(deleted).result]); object.Cells(deleted) = []; end -- GitLab

    H+3jYmdW^X$W`-yMzZ+q~6V*Kw;V7voV(l2<%V5 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