
    niyJ                         S r SSKrSSKJrJr  SSKrS r " S S5      r " S S5      r	 " S	 S
5      r
 " S S5      r " S S5      rg)z
Comprehensive unit tests for the pyreason._Settings class.
Tests all property getters/setters, type validation, and reset functionality.
    N)patch	MagicMockc                  X    [        [        S5      (       d   e[        R                  c   eg)zKTest that we can import pyreason settings without expensive initialization.settingsN)hasattrprr        `/home/james-whalen/.local/lib/python3.13/site-packages/tests/api_tests/test_pyreason_settings.pytest_settings_importr      s'     2z"""";;"""r
   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)TestSettingsDefaults   z0Test default values for all settings properties.c                 .    [         R                  " 5         gz Reset settings before each test.Nr   reset_settingsselfs    r   setup_method!TestSettingsDefaults.setup_method        	r
   c                 B    [         R                  R                  SL d   eg)zTest verbose default value.TNr   r   verboser   s    r   test_verbose_default)TestSettingsDefaults.test_verbose_default   s     {{""d***r
   c                 B    [         R                  R                  SL d   eg)z"Test output_to_file default value.FNr   r   output_to_filer   s    r   test_output_to_file_default0TestSettingsDefaults.test_output_to_file_default        {{))U222r
   c                 D    [         R                  R                  S:X  d   eg)z$Test output_file_name default value.pyreason_outputNr   r   output_file_namer   s    r   test_output_file_name_default2TestSettingsDefaults.test_output_file_name_default$   s     {{++/@@@@r
   c                 B    [         R                  R                  SL d   eg)z+Test graph_attribute_parsing default value.TNr   r   graph_attribute_parsingr   s    r   $test_graph_attribute_parsing_default9TestSettingsDefaults.test_graph_attribute_parsing_default)   s     {{22d:::r
   c                 B    [         R                  R                  SL d   eg)z*Test abort_on_inconsistency default value.FNr   r   abort_on_inconsistencyr   s    r   #test_abort_on_inconsistency_default8TestSettingsDefaults.test_abort_on_inconsistency_default.   s     {{11U:::r
   c                 B    [         R                  R                  SL d   eg)z"Test memory_profile default value.FNr   r   memory_profiler   s    r   test_memory_profile_default0TestSettingsDefaults.test_memory_profile_default3   r#   r
   c                 B    [         R                  R                  SL d   eg)z#Test reverse_digraph default value.FNr   r   reverse_digraphr   s    r   test_reverse_digraph_default1TestSettingsDefaults.test_reverse_digraph_default8   s     {{**e333r
   c                 B    [         R                  R                  SL d   eg)zTest atom_trace default value.FNr   r   
atom_tracer   s    r   test_atom_trace_default,TestSettingsDefaults.test_atom_trace_default=        {{%%...r
   c                 B    [         R                  R                  SL d   eg)z2Test save_graph_attributes_to_trace default value.FNr   r   save_graph_attributes_to_tracer   s    r   +test_save_graph_attributes_to_trace_default@TestSettingsDefaults.test_save_graph_attributes_to_trace_defaultB   s     {{99UBBBr
   c                 B    [         R                  R                  SL d   eg)zTest canonical default value.FNr   r   	canonicalr   s    r   test_canonical_default+TestSettingsDefaults.test_canonical_defaultG   s     {{$$---r
   c                 B    [         R                  R                  SL d   eg)zTest persistent default value.FNr   r   
persistentr   s    r   test_persistent_default,TestSettingsDefaults.test_persistent_defaultL   rC   r
   c                 B    [         R                  R                  SL d   eg)z'Test inconsistency_check default value.TNr   r   inconsistency_checkr   s    r    test_inconsistency_check_default5TestSettingsDefaults.test_inconsistency_check_defaultQ   s     {{..$666r
   c                 B    [         R                  R                  SL d   eg)z&Test static_graph_facts default value.TNr   r   static_graph_factsr   s    r   test_static_graph_facts_default4TestSettingsDefaults.test_static_graph_facts_defaultV   s     {{--555r
   c                 B    [         R                  R                  SL d   eg)z0Test store_interpretation_changes default value.TNr   r   store_interpretation_changesr   s    r   )test_store_interpretation_changes_default>TestSettingsDefaults.test_store_interpretation_changes_default[   s     {{774???r
   c                 B    [         R                  R                  SL d   eg)z&Test parallel_computing default value.FNr   r   parallel_computingr   s    r   test_parallel_computing_default4TestSettingsDefaults.test_parallel_computing_default`        {{--666r
   c                 D    [         R                  R                  S:X  d   eg)zTest update_mode default value.intersectionNr   r   update_moder   s    r   test_update_mode_default-TestSettingsDefaults.test_update_mode_defaulte   s     {{&&.888r
   c                 B    [         R                  R                  SL d   eg)z&Test allow_ground_rules default value.FNr   r   allow_ground_rulesr   s    r   test_allow_ground_rules_default4TestSettingsDefaults.test_allow_ground_rules_defaultj   rg   r
   c                 B    [         R                  R                  SL d   eg)zTest fp_version default value.FNr   r   
fp_versionr   s    r   test_fp_version_default,TestSettingsDefaults.test_fp_version_defaulto   rC   r
   r	   N)__name__
__module____qualname____firstlineno____doc__r   r   r!   r(   r-   r2   r7   r<   rA   rG   rL   rQ   rV   r[   r`   re   rl   rq   rv   __static_attributes__r	   r
   r   r   r      sg    :
+
3
A
;
;
3
4
/
C
.
/
7
6
@
7
9
7
/r
   r   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestSettingsValidSettersu   z-Test setting valid values for all properties.c                 .    [         R                  " 5         gr   r   r   s    r   r   %TestSettingsValidSetters.setup_methodx   r   r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)zTest setting verbose to True.TNr   r   s    r   test_verbose_setter_true1TestSettingsValidSetters.test_verbose_setter_true}   s(     #{{""d***r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)zTest setting verbose to False.FNr   r   s    r   test_verbose_setter_false2TestSettingsValidSetters.test_verbose_setter_false   s(     ${{""e+++r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z$Test setting output_to_file to True.TNr   r   s    r   test_output_to_file_setter_true8TestSettingsValidSetters.test_output_to_file_setter_true   (     &*"{{))T111r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z%Test setting output_to_file to False.FNr   r   s    r    test_output_to_file_setter_false9TestSettingsValidSetters.test_output_to_file_setter_false   s(     &+"{{))U222r
   c                 n    S[         R                  l        [         R                  R                  S:X  d   eg)z.Test setting output_file_name to valid string.test_outputNr&   r   s    r   )test_output_file_name_setter_valid_stringBTestSettingsValidSetters.test_output_file_name_setter_valid_string   s(     (5${{++}<<<r
   c                 n    S[         R                  l        [         R                  R                  S:X  d   eg)z.Test setting output_file_name to empty string. Nr&   r   s    r   )test_output_file_name_setter_empty_stringBTestSettingsValidSetters.test_output_file_name_setter_empty_string   s(     (*${{++r111r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z-Test setting graph_attribute_parsing to True.TNr+   r   s    r   (test_graph_attribute_parsing_setter_trueATestSettingsValidSetters.test_graph_attribute_parsing_setter_true   s(     /3+{{22d:::r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z.Test setting graph_attribute_parsing to False.FNr+   r   s    r   )test_graph_attribute_parsing_setter_falseBTestSettingsValidSetters.test_graph_attribute_parsing_setter_false   s(     /4+{{22e;;;r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z,Test setting abort_on_inconsistency to True.TNr0   r   s    r   'test_abort_on_inconsistency_setter_true@TestSettingsValidSetters.test_abort_on_inconsistency_setter_true   s(     .2*{{11T999r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z$Test setting memory_profile to True.TNr5   r   s    r   test_memory_profile_setter_true8TestSettingsValidSetters.test_memory_profile_setter_true   r   r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z%Test setting reverse_digraph to True.TNr:   r   s    r    test_reverse_digraph_setter_true9TestSettingsValidSetters.test_reverse_digraph_setter_true   s(     '+#{{**d222r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z Test setting atom_trace to True.TNr?   r   s    r   test_atom_trace_setter_true4TestSettingsValidSetters.test_atom_trace_setter_true   (     "&{{%%---r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z4Test setting save_graph_attributes_to_trace to True.TNrE   r   s    r   /test_save_graph_attributes_to_trace_setter_trueHTestSettingsValidSetters.test_save_graph_attributes_to_trace_setter_true   s(     6:2{{99TAAAr
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z Test setting canonical to False.FNrJ   r   s    r   test_canonical_setter_false4TestSettingsValidSetters.test_canonical_setter_false   s(     !&{{$$---r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z!Test setting persistent to False.FNrO   r   s    r   test_persistent_setter_false5TestSettingsValidSetters.test_persistent_setter_false   s(     "'{{%%...r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z)Test setting inconsistency_check to True.TNrT   r   s    r   $test_inconsistency_check_setter_true=TestSettingsValidSetters.test_inconsistency_check_setter_true   s(     +/'{{..$666r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z)Test setting static_graph_facts to False.FNrY   r   s    r   $test_static_graph_facts_setter_false=TestSettingsValidSetters.test_static_graph_facts_setter_false   (     */&{{--666r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z2Test setting store_interpretation_changes to True.TNr^   r   s    r   -test_store_interpretation_changes_setter_trueFTestSettingsValidSetters.test_store_interpretation_changes_setter_true   s(     480{{774???r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z(Test setting parallel_computing to True.TNrc   r   s    r   #test_parallel_computing_setter_true<TestSettingsValidSetters.test_parallel_computing_setter_true   s(     *.&{{--555r
   c                 n    S[         R                  l        [         R                  R                  S:X  d   eg)z)Test setting update_mode to valid string.parallelNrj   r   s    r   $test_update_mode_setter_valid_string=TestSettingsValidSetters.test_update_mode_setter_valid_string   s(     #-{{&&*444r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z)Test setting allow_ground_rules to False.FNro   r   s    r   $test_allow_ground_rules_setter_false=TestSettingsValidSetters.test_allow_ground_rules_setter_false   r   r
   c                 l    S[         R                  l        [         R                  R                  SL d   eg)z Test setting fp_version to True.TNrt   r   s    r   test_fp_version_setter_true4TestSettingsValidSetters.test_fp_version_setter_true   r   r
   r	   N)rx   ry   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r	   r
   r   r   r   u   sz    7
+,23=2;<:23.B./77@657.r
   r   c                      \ rS rSrSrS r\R                  R                  SSSS/ 0 S\	" 5       /5      S	 5       r
\R                  R                  SSSS/ 0 S\	" 5       /5      S
 5       r\R                  R                  SSSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       r\R                  R                  SSSS/ 0 S\	" 5       /5      S 5       rSrg)TestSettingsInvalidSettersi  z.Test type validation for all property setters.c                 .    [         R                  " 5         gr   r   r   s    r   r   'TestSettingsInvalidSetters.setup_method  r   r
   invalid_valuenot_bool{   gQ	@Nc                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z'Test verbose setter with invalid types.value has to be a boolmatchN)pytestraises	TypeErrorr   r   r   r   r   s     r    test_verbose_setter_invalid_type;TestSettingsInvalidSetters.test_verbose_setter_invalid_type
  s,     ]]9,DE"/BKK FEE	   9
Ac                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z.Test output_to_file setter with invalid types.r   r   N)r   r   r   r   r   r    r   s     r   'test_output_to_file_setter_invalid_typeBTestSettingsInvalidSetters.test_output_to_file_setter_invalid_type  ,     ]]9,DE)6BKK& FEEr   TFc                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z0Test output_file_name setter with invalid types.zfile_name has to be a stringr   N)r   r   r   r   r   r'   r   s     r   )test_output_file_name_setter_invalid_typeDTestSettingsInvalidSetters.test_output_file_name_setter_invalid_type  s,     ]]9,JK+8BKK( LKKr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z7Test graph_attribute_parsing setter with invalid types.r   r   N)r   r   r   r   r   r,   r   s     r   0test_graph_attribute_parsing_setter_invalid_typeKTestSettingsInvalidSetters.test_graph_attribute_parsing_setter_invalid_type%  s,     ]]9,DE2?BKK/ FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z6Test abort_on_inconsistency setter with invalid types.r   r   N)r   r   r   r   r   r1   r   s     r   /test_abort_on_inconsistency_setter_invalid_typeJTestSettingsInvalidSetters.test_abort_on_inconsistency_setter_invalid_type.  s,     ]]9,DE1>BKK. FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z.Test memory_profile setter with invalid types.r   r   N)r   r   r   r   r   r6   r   s     r   'test_memory_profile_setter_invalid_typeBTestSettingsInvalidSetters.test_memory_profile_setter_invalid_type7  r   r   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z/Test reverse_digraph setter with invalid types.r   r   N)r   r   r   r   r   r;   r   s     r   (test_reverse_digraph_setter_invalid_typeCTestSettingsInvalidSetters.test_reverse_digraph_setter_invalid_type@  s,     ]]9,DE*7BKK' FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z*Test atom_trace setter with invalid types.r   r   N)r   r   r   r   r   r@   r   s     r   #test_atom_trace_setter_invalid_type>TestSettingsInvalidSetters.test_atom_trace_setter_invalid_typeI  ,     ]]9,DE%2BKK" FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z>Test save_graph_attributes_to_trace setter with invalid types.r   r   N)r   r   r   r   r   rF   r   s     r   7test_save_graph_attributes_to_trace_setter_invalid_typeRTestSettingsInvalidSetters.test_save_graph_attributes_to_trace_setter_invalid_typeR  s,     ]]9,DE9FBKK6 FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z)Test canonical setter with invalid types.r   r   N)r   r   r   r   r   rK   r   s     r   "test_canonical_setter_invalid_type=TestSettingsInvalidSetters.test_canonical_setter_invalid_type[  s,     ]]9,DE$1BKK! FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z*Test persistent setter with invalid types.r   r   N)r   r   r   r   r   rP   r   s     r   #test_persistent_setter_invalid_type>TestSettingsInvalidSetters.test_persistent_setter_invalid_typed  r   r   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z3Test inconsistency_check setter with invalid types.r   r   N)r   r   r   r   r   rU   r   s     r   ,test_inconsistency_check_setter_invalid_typeGTestSettingsInvalidSetters.test_inconsistency_check_setter_invalid_typem  s,     ]]9,DE.;BKK+ FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z2Test static_graph_facts setter with invalid types.r   r   N)r   r   r   r   r   rZ   r   s     r   +test_static_graph_facts_setter_invalid_typeFTestSettingsInvalidSetters.test_static_graph_facts_setter_invalid_typev  ,     ]]9,DE-:BKK* FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z<Test store_interpretation_changes setter with invalid types.r   r   N)r   r   r   r   r   r_   r   s     r   5test_store_interpretation_changes_setter_invalid_typePTestSettingsInvalidSetters.test_store_interpretation_changes_setter_invalid_type  s,     ]]9,DE7DBKK4 FEEr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z2Test parallel_computing setter with invalid types.r   r   N)r   r   r   r   r   rd   r   s     r   +test_parallel_computing_setter_invalid_typeFTestSettingsInvalidSetters.test_parallel_computing_setter_invalid_type  r  r   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z+Test update_mode setter with invalid types.zvalue has to be a strr   N)r   r   r   r   r   rk   r   s     r   $test_update_mode_setter_invalid_type?TestSettingsInvalidSetters.test_update_mode_setter_invalid_type  s,     ]]9,CD&3BKK# EDDr   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z2Test allow_ground_rules setter with invalid types.r   r   N)r   r   r   r   r   rp   r   s     r   +test_allow_ground_rules_setter_invalid_typeFTestSettingsInvalidSetters.test_allow_ground_rules_setter_invalid_type  r  r   c                     [         R                  " [        SS9   U[        R                  l        SSS5        g! , (       d  f       g= f)z*Test fp_version setter with invalid types.r   r   N)r   r   r   r   r   ru   r   s     r   #test_fp_version_setter_invalid_type>TestSettingsInvalidSetters.test_fp_version_setter_invalid_type  r   r   r	   )rx   ry   rz   r{   r|   r   r   markparametrizeobjectr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r}   r	   r
   r   r   r     s:   8
 [[_Cr2tVX/ 00 [[_Cr2tVX/ 77 [[_eS$Bfh/ 99 [[_Cr2tVX/ @@ [[_Cr2tVX/ ?? [[_Cr2tVX/ 77 [[_Cr2tVX/ 88 [[_Cr2tVX/ 33 [[_Cr2tVX/ GG [[_Cr2tVX/ 22 [[_Cr2tVX/ 33 [[_Cr2tVX/ << [[_Cr2tVX/ ;; [[_Cr2tVX/ EE [[_Cr2tVX/ ;; [[_eS$Bfh/ 44 [[_Cr2tVX/ ;; [[_Cr2tVX/ 33r
   r   c                   $    \ rS rSrSrS rS rSrg)TestSettingsReseti  z"Test settings reset functionality.c                    S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l	        S[         R                  l
        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        [         R(                  " 5         [         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  S:X  d   e[         R                  R
                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                   SL d   e[         R                  R"                  S:X  d   e[         R                  R$                  SL d   e[         R                  R&                  SL d   eg)z=Test that reset_settings restores all properties to defaults.FTcustom_outputcustom_moder%   ri   N)r   r   r   r    r'   r,   r1   r6   r;   r@   rF   rK   rP   rU   rZ   r_   rd   rk   rp   ru   r   r   s    r   )test_reset_settings_restores_all_defaults;TestSettingsReset.test_reset_settings_restores_all_defaults  s   
 $%)"'6$.3+-1*%)"&*#!%592 $!%*/').&380)-&"/)-&!% 	 {{""d***{{))U222{{++/@@@@{{22d:::{{11U:::{{))U222{{**e333{{%%...{{99UBBB{{$$---{{%%...{{..$666{{--555{{774???{{--666{{&&.888{{--666{{%%...r
   c                 x   S[         R                  l        S[         R                  l        S[         R                  l        [         R                  R                  5         [         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R                  SL d   eg)z*Test the Settings.reset() method directly.FTN)r   r   r   r6   rK   resetr   s    r   test_settings_reset_method,TestSettingsReset.test_settings_reset_method  s    
 $%)" $ 	 {{""d***{{))U222{{$$---r
   r	   N)rx   ry   rz   r{   r|   r  r  r}   r	   r
   r   r  r    s    ,-/^.r
   r  c                   $    \ rS rSrSrS rS rSrg)TestSettingsStatei  z-Test settings state management and isolation.c                     [         R                  " 5         S[         R                  l        [         R                  R                  SL d   e[         R                  R                  SL d   eg)z5Test that settings modifications persist until reset.TN)r   r   r   r   r   s    r   #test_settings_modification_persists5TestSettingsState.test_settings_modification_persists  sP     	 #{{""d*** {{""d***r
   c                 h   [         R                  " 5         S[         R                  l        S[         R                  l        S[         R                  l        [         R                  R                  SL d   e[         R                  R                  SL d   e[         R                  R
                  S:X  d   eg)z-Test modifying multiple settings in sequence.TtestN)r   r   r   r   r6   r'   r   s    r   $test_multiple_settings_modifications6TestSettingsState.test_multiple_settings_modifications   s     	 #%)"'-$ {{""d***{{))T111{{++v555r
   r	   N)rx   ry   rz   r{   r|   r$  r(  r}   r	   r
   r   r"  r"    s    7
+6r
   r"  )r|   r   unittest.mockr   r   pyreasonr   r   r   r   r   r  r"  r	   r
   r   <module>r,     sX   
  * #`/ `/FJ. J.Zh3 h3VA. A.H6 6r
   