§
    \ùMhØ  ã                   óR  — d dl Z d dlmZ d dlmZ d dlZd dlZd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$ej%         &                    d! e'd"„ d#D ¦   «         ¦  «        ¦  «        d$„ ¦   «         Z(dS )%é    N)Úproduct)Údedentc                  ó  — t          j        ddt           j        ¬¦  «        } | j        D ]2}dt	          t          d¦  «        |z   ¦  «        z   | j        |         d<   Œ3t          d¦  «                             ¦   «         }t          d¦  «                             ¦   «         }t          j        | d¬	¦  «        }d
 	                    |¦  «        |k    sJ ‚t          j        | d¬	¦  «        }d
 	                    |¦  «        |k    sJ ‚d S )Né   ©ÚrÚhÚcreate_usingÚnode_ÚaÚlabeluÁ   
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â”œâ”€â•¼ 3
            â”‚   â””â”€â•¼ 4
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â””â”€â•¼ 6
        uä   
        â•™â”€â”€ node_a
            â”œâ”€â•¼ node_b
            â”‚   â”œâ”€â•¼ node_d
            â”‚   â””â”€â•¼ node_e
            â””â”€â•¼ node_c
                â”œâ”€â•¼ node_f
                â””â”€â•¼ node_g
        F)Úwith_labelsú
T)
ÚnxÚbalanced_treeÚDiGraphÚnodesÚchrÚordr   ÚstripÚgenerate_network_textÚjoin)ÚgraphÚnodeÚnode_targetÚlabel_targetÚrets        úb/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/readwrite/tests/test_text.pyÚ*test_generate_network_text_forest_directedr   
   s	  € åÔ˜q AµB´JÐ?Ñ?Ô?€EØ”ð Dð DˆØ%,­sµ3°s±8´8¸d±?Ñ/CÔ/CÑ%CˆŒDÔ˜'Ñ"Ð"åð	ñ
ô 
÷ ‚eg„gð õ ð	ñ
ô 
÷ ‚eg„gð õ Ô
" 5°eÐ
<Ñ
<Ô
<€CØ9Š9S‰>Œ>˜[Ò(Ð(Ð(Ð(õ Ô
" 5°dÐ
;Ñ
;Ô
;€CØ9Š9S‰>Œ>˜\Ò)Ð)Ð)Ð)Ð)Ð)ó    c                  ó$  — d„ }  | t          j        ¦   «         ¦  «        dk    sJ ‚ | t          j        ¦   «         ¦  «        dk    sJ ‚ | t          j        ¦   «         d¬¦  «        dk    sJ ‚ | t          j        ¦   «         d¬¦  «        dk    sJ ‚d S )Nc                 ód   — g }t          j        | |j        fddi|¤Ž d                     |¦  «        S )NÚendÚ r   )r   Úwrite_network_textÚappendr   )ÚgÚkwÚprintbufs      r   Ú
_graph_strz7test_write_network_text_empty_graph.<locals>._graph_str2   s;   € ØˆÝ
Ô˜a ¤Ð?Ð?°bÐ?¸BÐ?Ð?Ð?ØyŠy˜Ñ"Ô"Ð"r    u   â•™T)Ú
ascii_onlyú+)r   r   ÚGraph)r*   s    r   Ú#test_write_network_text_empty_graphr.   1   s§   € ð#ð #ð #ð
 ˆ:•b”j‘l”lÑ#Ô# uÒ,Ð,Ð,Ð,Øˆ:•b”h‘j”jÑ!Ô! UÒ*Ð*Ð*Ð*Øˆ:•b”j‘l”l¨tÐ4Ñ4Ô4¸Ò;Ð;Ð;Ð;Øˆ:•b”h‘j”j¨TÐ2Ñ2Ô2°cÒ9Ð9Ð9Ð9Ð9Ð9r    c                  ór  — t          j        ¦   «         } |                      g d¢¦  «         |                      dd¦  «         g }|j        }t          j        | |d¬¦  «         t          j        | |dd¬¦  «         d                     |¦  «        }t          d	¦  «                             ¦   «         }||k    sJ ‚d S )
N©é   r   é   é   r   r3   r$   ©Úpathr#   T©r5   r+   r#   r   u›   
        â•Ÿâ”€â”€ 1
        â•Ÿâ”€â”€ 2
        â•Ž   â””â”€â•¼ 4
        â•™â”€â”€ 3
        +-- 1
        +-- 2
        :   L-> 4
        +-- 3
        )	r   r   Úadd_nodes_fromÚadd_edger&   r%   r   r   r   )r'   ÚlinesÚwriteÚtextÚtargets        r   Ú+test_write_network_text_within_forest_glyphr=   =   s½   € Ý
Œ
‰Œ€AØ×Ò\\\Ñ"Ô"Ð"Ø‡J‚Jˆq!ÑÔÐØ€EØŒL€EÝÔ˜! %¨RÐ0Ñ0Ô0Ð0ÝÔ˜! %°D¸bÐAÑAÔAÐAØ9Š9UÑÔ€DÝð		ñô ÷ ‚eg„gð ð 6Š>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        ddt           j        ¬¦  «        } t          j        ddt           j        ¬¦  «        }t          j        | |g¦  «        }d                     t          j        |¦  «        ¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚t          j        ddt           j        ¬¦  «        }t          j        | ||g¦  «        }d                     t          j        |g d¢¬¦  «        ¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d                     t          j        |g d¢d¬	¦  «        ¦  «        }t          d
¦  «                             ¦   «         }||k    sJ ‚d S )Nr   r   r   u‰  
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â”‚   â”œâ”€â•¼ 3
        â•Ž   â”‚   â””â”€â•¼ 4
        â•Ž   â””â”€â•¼ 2
        â•Ž       â”œâ”€â•¼ 5
        â•Ž       â””â”€â•¼ 6
        â•™â”€â”€ 7
            â”œâ”€â•¼ 8
            â”‚   â”œâ”€â•¼ 10
            â”‚   â””â”€â•¼ 11
            â””â”€â•¼ 9
                â”œâ”€â•¼ 12
                â””â”€â•¼ 13
        )r   é   é   ©ÚsourcesuT  
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â”‚   â”œâ”€â•¼ 3
        â•Ž   â”‚   â””â”€â•¼ 4
        â•Ž   â””â”€â•¼ 2
        â•Ž       â”œâ”€â•¼ 5
        â•Ž       â””â”€â•¼ 6
        â•Ÿâ”€â”€ 14
        â•Ž   â”œâ”€â•¼ 15
        â•Ž   â”‚   â”œâ”€â•¼ 17
        â•Ž   â”‚   â””â”€â•¼ 18
        â•Ž   â””â”€â•¼ 16
        â•Ž       â”œâ”€â•¼ 19
        â•Ž       â””â”€â•¼ 20
        â•™â”€â”€ 7
            â”œâ”€â•¼ 8
            â”‚   â”œâ”€â•¼ 10
            â”‚   â””â”€â•¼ 11
            â””â”€â•¼ 9
                â”œâ”€â•¼ 12
                â””â”€â•¼ 13
        T©rB   r+   a²  
        +-- 0
        :   |-> 1
        :   |   |-> 3
        :   |   L-> 4
        :   L-> 2
        :       |-> 5
        :       L-> 6
        +-- 14
        :   |-> 15
        :   |   |-> 17
        :   |   L-> 18
        :   L-> 16
        :       |-> 19
        :       L-> 20
        +-- 7
            |-> 8
            |   |-> 10
            |   L-> 11
            L-> 9
                |-> 12
                L-> 13
        )r   r   r   Údisjoint_union_allr   r   r   r   )Útree1Útree2Úforestr   r<   Útree3s         r   Ú.test_generate_network_text_directed_multi_treerI   U   s~  € ÝÔ˜q AµB´JÐ?Ñ?Ô?€EÝÔ˜q AµB´JÐ?Ñ?Ô?€EÝÔ" E¨5 >Ñ2Ô2€FØ
)Š)•BÔ,¨VÑ4Ô4Ñ
5Ô
5€Cåð	ñô ÷" ‚eg„gð# ð$ &Š=ˆ=ˆ=ˆ=åÔ˜q AµB´JÐ?Ñ?Ô?€EÝÔ" E¨5°%Ð#8Ñ9Ô9€FØ
)Š)•BÔ,¨V¸Z¸Z¸ZÐHÑHÔHÑ
IÔ
I€Cåð	ñô ÷0 ‚eg„gð1 ð2 &Š=ˆ=ˆ=ˆ=à
)Š)Ý
Ô  °°°ÈÐMÑMÔMñô €Cõ ð	ñô ÷0 ‚eg„gð1 ð2 &Š=ˆ=ˆ=ˆ=ˆ=ˆ=r    c                  óT  ‡— t          j        ddt           j        ¬¦  «        Št          j        ddt           j        ¬¦  «        } t          j        | ˆfd„| j        D ¦   «         ¦  «        } t          j        ‰| ¦  «        }d                     t          j        |ddg¬¦  «        ¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d                     t          j        |ddgd	¬
¦  «        ¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nr   r   c                 ó6   •— i | ]}||t          ‰¦  «        z   “ŒS © )Úlen)Ú.0ÚnrE   s     €r   ú
<dictcomp>zDtest_generate_network_text_undirected_multi_tree.<locals>.<dictcomp>±   s%   ø€ Ð$LÐ$LÐ$L¸1 Q¨­C°©J¬J©Ð$LÐ$LÐ$Lr    r   r   r@   rA   u‰  
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â”€ 1
        â•Ž   â”‚   â”œâ”€â”€ 3
        â•Ž   â”‚   â””â”€â”€ 4
        â•Ž   â””â”€â”€ 2
        â•Ž       â”œâ”€â”€ 5
        â•Ž       â””â”€â”€ 6
        â•™â”€â”€ 7
            â”œâ”€â”€ 8
            â”‚   â”œâ”€â”€ 10
            â”‚   â””â”€â”€ 11
            â””â”€â”€ 9
                â”œâ”€â”€ 12
                â””â”€â”€ 13
        TrC   a!  
        +-- 0
        :   |-- 1
        :   |   |-- 3
        :   |   L-- 4
        :   L-- 2
        :       |-- 5
        :       L-- 6
        +-- 7
            |-- 8
            |   |-- 10
            |   L-- 11
            L-- 9
                |-- 12
                L-- 13
        )
r   r   r-   Úrelabel_nodesr   Úunionr   r   r   r   )rF   rG   r   r<   rE   s       @r   Ú0test_generate_network_text_undirected_multi_treerS   ®   s"  ø€ ÝÔ˜q AµB´HÐ=Ñ=Ô=€EÝÔ˜q AµB´HÐ=Ñ=Ô=€EÝÔ˜UÐ$LÐ$LÐ$LÐ$LÀÄÐ$LÑ$LÔ$LÑMÔM€EÝŒXe˜UÑ#Ô#€FØ
)Š)•BÔ,¨V¸aÀ¸VÐDÑDÔDÑ
EÔ
E€Cåð	ñô ÷" ‚eg„gð# ð$ &Š=ˆ=ˆ=ˆ=à
)Š)•BÔ,¨V¸aÀ¸VÐPTÐUÑUÔUÑ
VÔ
V€Cåð	ñô ÷" ‚eg„gð# ð$ &Š=ˆ=ˆ=ˆ=ˆ=ˆ=r    c                  ó”  — t          j        ddt           j        ¬¦  «        } t          d¦  «                             ¦   «         }d                     t          j        | dg¬¦  «        ¦  «        }||k    sJ ‚t          d¦  «                             ¦   «         }d                     t          j        | dg¬¦  «        ¦  «        }||k    sJ ‚d S )Nr   r   uÁ   
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 3
            â”‚   â””â”€â”€ 4
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â””â”€â”€ 6
        r   r   rA   uÇ   
        â•™â”€â”€ 2
            â”œâ”€â”€ 0
            â”‚   â””â”€â”€ 1
            â”‚       â”œâ”€â”€ 3
            â”‚       â””â”€â”€ 4
            â”œâ”€â”€ 5
            â””â”€â”€ 6
        )r   r   r-   r   r   r   r   )r   Únode_target0r   Únode_target2s       r   Ú,test_generate_network_text_forest_undirectedrW   à   sÓ   € åÔ˜q AµB´HÐ=Ñ=Ô=€Eåð	ñ
ô 
÷ ‚eg„gð ð )Š)•BÔ,¨U¸Q¸CÐ@Ñ@Ô@Ñ
AÔ
A€CØ,ÒÐÐÐõ ð	ñ
ô 
÷ ‚eg„gð ð )Š)•BÔ,¨U¸Q¸CÐ@Ñ@Ô@Ñ
AÔ
A€CØ,ÒÐÐÐÐÐr    c            	      ó<  — t          j        t          j        ddt           j        ¬¦  «        t          j        ddt           j        ¬¦  «        t          j        ddt           j        ¬¦  «        g¦  «        } t	          d¦  «                             ¦   «         }t	          d¦  «                             ¦   «         }d                     t          j        | | j        ¬¦  «        ¦  «        }d                     t          j        | ¦  «        ¦  «        }||k    sJ ‚||k    sJ ‚dS )	zª
    When sources are directly specified, we won't be able to determine when we
    are in the last component, so there will always be a trailing, leftmost
    pipe.
    r   r1   r   uå   
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â””â”€â•¼ 2
        â•Ÿâ”€â”€ 3
        â•Ž   â””â”€â•¼ 4
        â•Ž       â””â”€â•¼ 5
        â•Ÿâ”€â”€ 6
        â•Ž   â”œâ”€â•¼ 7
        â•Ž   â””â”€â•¼ 8
        uá   
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â””â”€â•¼ 2
        â•Ÿâ”€â”€ 3
        â•Ž   â””â”€â•¼ 4
        â•Ž       â””â”€â•¼ 5
        â•™â”€â”€ 6
            â”œâ”€â•¼ 7
            â””â”€â•¼ 8
        r   rA   N)	r   rD   r   r   r   r   r   r   r   )r   Útarget1Útarget2Úgot1Úgot2s        r   Ú0test_generate_network_text_overspecified_sourcesr]     s  € õ Ô!åÔ˜q AµB´JÐ?Ñ?Ô?ÝÔ˜q AµB´JÐ?Ñ?Ô?ÝÔ˜q AµB´JÐ?Ñ?Ô?ð	
ñô €Eõ ð
	ñô ÷ ‚eg„gð õ ð
	ñô ÷ ‚eg„gð ð 9Š9•RÔ-¨e¸U¼[ÐIÑIÔIÑJÔJ€DØ9Š9•RÔ-¨eÑ4Ô4Ñ5Ô5€DØ7Š?ˆ?ˆ?ˆ?Ø7Š?ˆ?ˆ?ˆ?ˆ?ˆ?r    c                  óê  — t          j        ¦   «         } |                      g d¢¦  «         g }|j        } |d¦  «         t          j        | |d¬¦  «         t          | j        | j        ¦  «        D ]D\  }} |d|› d|› d¦  «         |                      ||¦  «         t          j        | |d¬¦  «         ŒEd                     |¦  «        }t          d	¦  «         
                    ¦   «         }||k    sJ ‚d
S )úS
    Walk through the cases going from a disconnected to fully connected graph
    r0   ú--- initial state ---r$   r4   ú--- add_edge(ú, ú) ---r   uk  
        --- initial state ---
        â•Ÿâ”€â”€ 1
        â•Ÿâ”€â”€ 2
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 1) ---
        â•Ÿâ”€â”€ 1 â•¾ 1
        â•Ž   â””â”€â•¼  ...
        â•Ÿâ”€â”€ 2
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 2) ---
        â•Ÿâ”€â”€ 1 â•¾ 1
        â•Ž   â”œâ”€â•¼ 2
        â•Ž   â””â”€â•¼  ...
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 3) ---
        â•Ÿâ”€â”€ 1 â•¾ 1
        â•Ž   â”œâ”€â•¼ 2
        â•Ž   â”œâ”€â•¼ 3
        â•Ž   â””â”€â•¼  ...
        â•™â”€â”€ 4
        --- add_edge(1, 4) ---
        â•™â”€â”€ 1 â•¾ 1
            â”œâ”€â•¼ 2
            â”œâ”€â•¼ 3
            â”œâ”€â•¼ 4
            â””â”€â•¼  ...
        --- add_edge(2, 1) ---
        â•™â”€â”€ 2 â•¾ 1
            â””â”€â•¼ 1 â•¾ 1
                â”œâ”€â•¼ 3
                â”œâ”€â•¼ 4
                â””â”€â•¼  ...
        --- add_edge(2, 2) ---
        â•™â”€â”€ 1 â•¾ 1, 2
            â”œâ”€â•¼ 2 â•¾ 2
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 3
            â”œâ”€â•¼ 4
            â””â”€â•¼  ...
        --- add_edge(2, 3) ---
        â•™â”€â”€ 1 â•¾ 1, 2
            â”œâ”€â•¼ 2 â•¾ 2
            â”‚   â”œâ”€â•¼ 3 â•¾ 1
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 4
            â””â”€â•¼  ...
        --- add_edge(2, 4) ---
        â•™â”€â”€ 1 â•¾ 1, 2
            â”œâ”€â•¼ 2 â•¾ 2
            â”‚   â”œâ”€â•¼ 3 â•¾ 1
            â”‚   â”œâ”€â•¼ 4 â•¾ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 1) ---
        â•™â”€â”€ 2 â•¾ 1, 2
            â”œâ”€â•¼ 1 â•¾ 1, 3
            â”‚   â”œâ”€â•¼ 3 â•¾ 2
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 4 â•¾ 2
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 2) ---
        â•™â”€â”€ 3 â•¾ 1, 2
            â”œâ”€â•¼ 1 â•¾ 1, 2
            â”‚   â”œâ”€â•¼ 2 â•¾ 2, 3
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 3) ---
        â•™â”€â”€ 1 â•¾ 1, 2, 3
            â”œâ”€â•¼ 2 â•¾ 2, 3
            â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 4 â•¾ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 4) ---
        â•™â”€â”€ 1 â•¾ 1, 2, 3
            â”œâ”€â•¼ 2 â•¾ 2, 3
            â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 2
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 1) ---
        â•™â”€â”€ 2 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 1, 3, 4
            â”‚   â”œâ”€â•¼ 3 â•¾ 2, 3
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 2
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 2) ---
        â•™â”€â”€ 3 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 1, 2, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 2, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 3
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 3) ---
        â•™â”€â”€ 4 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 1, 2, 3
            â”‚   â”œâ”€â•¼ 2 â•¾ 2, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3, 4
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 4) ---
        â•™â”€â”€ 1 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 2 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 2, 4
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        N)r   r   r7   r&   r%   r   r   r8   r   r   r   ©r   r9   r:   ÚiÚjr;   r<   s          r   Ú4test_write_network_text_iterative_add_directed_edgesrg   5  s  € õ ŒJ‰LŒL€EØ	×Ò˜˜˜Ñ&Ô&Ð&Ø€EØŒL€EØ	€EÐ
!Ñ"Ô"Ð"ÝÔ˜% e°Ð4Ñ4Ô4Ð4Ý˜œ U¤[Ñ1Ô1ð 9ð 9‰ˆˆ1ØˆÐ+˜aÐ+Ð+ 1Ð+Ð+Ð+Ñ,Ô,Ð,ØŠq˜!ÑÔÐÝ
Ô˜e¨%°RÐ8Ñ8Ô8Ð8Ð8Ø9Š9UÑÔ€Dåð}	ñô ÷~ ‚eg„gð ð@ TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óø  — t          j        ¦   «         } |                      g d¢¦  «         g }|j        } |d¦  «         t          j        | |d¬¦  «         t          | j        | j        ¦  «        D ]K\  }}||k    rŒ |d|› d|› d¦  «         |                      ||¦  «         t          j        | |d¬¦  «         ŒLd                     |¦  «        }t          d	¦  «         
                    ¦   «         }||k    sJ ‚d
S )r_   r0   r`   r$   r4   ra   rb   rc   r   uø  
        --- initial state ---
        â•Ÿâ”€â”€ 1
        â•Ÿâ”€â”€ 2
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 2) ---
        â•Ÿâ”€â”€ 3
        â•Ÿâ”€â”€ 4
        â•™â”€â”€ 1
            â””â”€â”€ 2
        --- add_edge(1, 3) ---
        â•Ÿâ”€â”€ 4
        â•™â”€â”€ 2
            â””â”€â”€ 1
                â””â”€â”€ 3
        --- add_edge(1, 4) ---
        â•™â”€â”€ 2
            â””â”€â”€ 1
                â”œâ”€â”€ 3
                â””â”€â”€ 4
        --- add_edge(2, 1) ---
        â•™â”€â”€ 2
            â””â”€â”€ 1
                â”œâ”€â”€ 3
                â””â”€â”€ 4
        --- add_edge(2, 3) ---
        â•™â”€â”€ 4
            â””â”€â”€ 1
                â”œâ”€â”€ 2
                â”‚   â””â”€â”€ 3 â”€ 1
                â””â”€â”€  ...
        --- add_edge(2, 4) ---
        â•™â”€â”€ 3
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 3
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(3, 1) ---
        â•™â”€â”€ 3
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 3
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(3, 2) ---
        â•™â”€â”€ 3
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 3
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(3, 4) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(4, 1) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(4, 2) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(4, 3) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        N)r   r-   r7   r&   r%   r   r   r8   r   r   r   rd   s          r   Ú6test_write_network_text_iterative_add_undirected_edgesri   È  s(  € õ ŒH‰JŒJ€EØ	×Ò˜˜˜Ñ&Ô&Ð&Ø€EØŒL€EØ	€EÐ
!Ñ"Ô"Ð"ÝÔ˜% e°Ð4Ñ4Ô4Ð4Ý˜œ U¤[Ñ1Ô1ð 9ð 9‰ˆˆ1ØŠ6ˆ6ØØˆÐ+˜aÐ+Ð+ 1Ð+Ð+Ð+Ñ,Ô,Ð,ØŠq˜!ÑÔÐÝ
Ô˜e¨%°RÐ8Ñ8Ô8Ð8Ð8Ø9Š9UÑÔ€DÝðQ	ñSô S÷f ‚eg„gðg ðh TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó¤  — t          j        d¦  «        } t          j        ¦   «         }|                     g d¢¦  «         t          t          |j        |j        ¦  «        ¦  «        }|                      |¦  «         | 	                    |dd…         ¦  «         g }|j
        } |d¦  «         t          j        ||d¬¦  «         |dd…         D ]D\  }} |d	|› d
|› d¦  «         |                     ||¦  «         t          j        ||d¬¦  «         ŒEd                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚dS )r_   i°y.+)r1   r   r2   r3   é   r   é   r`   r$   r4   é   ra   rb   rc   r   u7  
        --- initial state ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(4, 1) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(2, 1) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4, 2
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(5, 2) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2, 5
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4, 2
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(1, 5) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2, 5
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5 â•¾ 1
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4, 2
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...

        N)ÚrandomÚRandomr   r   r7   Úlistr   r   ÚshuffleÚadd_edges_fromr&   r%   r8   r   r   r   )	Úrngr   Úpossible_edgesr9   r:   re   rf   r;   r<   s	            r   Ú;test_write_network_text_iterative_add_random_directed_edgesru   0  sm  € õ
 Œ-˜	Ñ
"Ô
"€CÝŒJ‰LŒL€EØ	×Ò˜˜˜Ñ)Ô)Ð)Ý' %¤+¨u¬{Ñ;Ô;Ñ<Ô<€NØ‡K‚KÑÔÐØ	×Ò˜¨¨!¨Ô,Ñ-Ô-Ð-Ø€EØŒL€EØ	€EÐ
!Ñ"Ô"Ð"ÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø˜q ˜tÔ$ð 9ð 9‰ˆˆ1ØˆÐ+˜aÐ+Ð+ 1Ð+Ð+Ð+Ñ,Ô,Ð,ØŠq˜!ÑÔÐÝ
Ô˜e¨%°RÐ8Ñ8Ô8Ð8Ð8Ø9Š9UÑÔ€DÝð4	ñ6ô 6÷l ‚eg„gðm ðn TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óú  — t          j        ¦   «         } |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      ¦   «         }|                      dd¦  «         |                      dd¦  «         |                      dd¦  «         g }|j        } |d	¦  «         t          j        ||d
¬¦  «          |d¦  «         t          j        | |d
¬¦  «          |d¦  «         t          j        |                     ¦   «         |dgd
¬¦  «          |d¦  «         t          j        |                      ¦   «         |dgd
¬¦  «         d                     |¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nr1   r   rk   r2   r3   é   r@   rl   ú--- directed case ---r$   r4   z"--- add (1, 8), (4, 2), (6, 3) ---ú--- undirected case ---©r5   rB   r#   r   u  
        --- directed case ---
        â•™â”€â”€ 1
            â”œâ”€â•¼ 2
            â”‚   â””â”€â•¼ 3
            â”‚       â””â”€â•¼ 4
            â””â”€â•¼ 5
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 7
                    â””â”€â•¼ 8
        --- add (1, 8), (4, 2), (6, 3) ---
        â•™â”€â”€ 1
            â”œâ”€â•¼ 2 â•¾ 4
            â”‚   â””â”€â•¼ 3 â•¾ 6
            â”‚       â””â”€â•¼ 4
            â”‚           â””â”€â•¼  ...
            â”œâ”€â•¼ 5
            â”‚   â””â”€â•¼ 6
            â”‚       â”œâ”€â•¼ 7
            â”‚       â”œâ”€â•¼ 8 â•¾ 1
            â”‚       â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- undirected case ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â””â”€â”€ 3
            â”‚       â””â”€â”€ 4
            â””â”€â”€ 5
                â””â”€â”€ 6
                    â”œâ”€â”€ 7
                    â””â”€â”€ 8
        --- add (1, 8), (4, 2), (6, 3) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3
            â”‚   â”‚   â”œâ”€â”€ 4 â”€ 2
            â”‚   â”‚   â””â”€â”€ 6
            â”‚   â”‚       â”œâ”€â”€ 5 â”€ 1
            â”‚   â”‚       â”œâ”€â”€ 7
            â”‚   â”‚       â””â”€â”€ 8 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        )
r   r   r8   Úcopyr&   r%   Úto_undirectedr   r   r   )r'   Úorigr9   r:   r;   r<   s         r   Ú%test_write_network_text_nearly_forestr~   ~  sù  € Ý
Œ
‰Œ€AØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ6Š6‰8Œ8€DØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ€EØŒL€EØ	€EÐ
!Ñ"Ô"Ð"ÝÔ˜$ U°Ð3Ñ3Ô3Ð3Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜! %¨RÐ0Ñ0Ô0Ð0Ø	€EÐ
#Ñ$Ô$Ð$ÝÔ˜$×,Ò,Ñ.Ô.°UÀQÀCÈRÐPÑPÔPÐPØ	€EÐ
.Ñ/Ô/Ð/ÝÔ˜!Ÿ/š/Ñ+Ô+°%À!ÀÈ"ÐMÑMÔMÐMØ9Š9UÑÔ€DÝð*	ñ,ô ,÷X ‚eg„gðY ðZ TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óš  — t           j                             dt           j        ¬¦  «        } g }|j        } |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «         d                     |¦  «        }t          d	¦  «         	                    ¦   «         }||k    sJ ‚d S )
Nrk   ©r
   rx   Tr$   r6   ry   r   aN  
        --- directed case ---
        +-- 0 <- 1, 2, 3, 4
            |-> 1 <- 2, 3, 4
            |   |-> 2 <- 0, 3, 4
            |   |   |-> 3 <- 0, 1, 4
            |   |   |   |-> 4 <- 0, 1, 2
            |   |   |   |   L->  ...
            |   |   |   L->  ...
            |   |   L->  ...
            |   L->  ...
            L->  ...
        --- undirected case ---
        +-- 0
            |-- 1
            |   |-- 2 - 0
            |   |   |-- 3 - 0, 1
            |   |   |   L-- 4 - 0, 1, 2
            |   |   L--  ...
            |   L--  ...
            L--  ...
        )
r   Ú
generatorsÚcomplete_graphr   r&   r%   r|   r   r   r   ©r   r9   r:   r;   r<   s        r   Ú1test_write_network_text_complete_graph_ascii_onlyr„   Æ  sÓ   € ÝŒM×(Ò(¨½¼Ð(ÑDÔD€EØ€EØŒL€EØ	€EÐ
!Ñ"Ô"Ð"ÝÔ˜% e¸À"ÐEÑEÔEÐEØ	€EÐ
#Ñ$Ô$Ð$ÝÔ˜%×-Ò-Ñ/Ô/°eÈÐRTÐUÑUÔUÐUØ9Š9UÑÔ€DÝð	ñô ÷. ‚eg„gð/ ð0 TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óX  — t           j                             dt           j        ¬¦  «        } | j        D ]}d|› d| j        |         d<   Œg }|j        }t          j        | |ddd¬	¦  «         d
                     |¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nrk   r€   zNode(n=ú)r   TFr$   )r5   r   r+   r#   r   uK  
        â•™â”€â”€ Node(n=0) â•¾ Node(n=1), Node(n=2), Node(n=3), Node(n=4)
            â”œâ”€â•¼ Node(n=1) â•¾ Node(n=2), Node(n=3), Node(n=4)
            â”‚   â”œâ”€â•¼ Node(n=2) â•¾ Node(n=0), Node(n=3), Node(n=4)
            â”‚   â”‚   â”œâ”€â•¼ Node(n=3) â•¾ Node(n=0), Node(n=1), Node(n=4)
            â”‚   â”‚   â”‚   â”œâ”€â•¼ Node(n=4) â•¾ Node(n=0), Node(n=1), Node(n=2)
            â”‚   â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        )
r   r   r‚   r   r   r&   r%   r   r   r   )r   rO   r9   r:   r;   r<   s         r   Ú#test_write_network_text_with_labelsr‡   ê  s»   € ÝŒM×(Ò(¨½¼Ð(ÑDÔD€EØŒ[ð 1ð 1ˆØ"0¨A . . .ˆŒAŒwÑÐØ€EØŒL€EÝÔ˜% e¸È%ÐUWÐXÑXÔXÐXØ9Š9UÑÔ€Dõ ð	ñô ÷ ‚eg„gð ð TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óÒ  — g } | j         }dD ]G}t          j                             |¦  «        } |d|› d¦  «         t          j        ||d¬¦  «         ŒHdD ]R}t          j                             |t          j        ¦  «        } |d|› d¦  «         t          j        ||d¬¦  «         ŒSd                     | ¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )	N)r   r1   r   r2   r3   rk   z--- undirected k=ú ---r$   r4   z--- directed k=r   ué  
        --- undirected k=0 ---
        â•™
        --- undirected k=1 ---
        â•™â”€â”€ 0
        --- undirected k=2 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1
        --- undirected k=3 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â””â”€â”€ 2 â”€ 0
            â””â”€â”€  ...
        --- undirected k=4 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â””â”€â”€ 3 â”€ 0, 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- undirected k=5 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0, 1
            â”‚   â”‚   â”‚   â””â”€â”€ 4 â”€ 0, 1, 2
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- directed k=0 ---
        â•™
        --- directed k=1 ---
        â•™â”€â”€ 0
        --- directed k=2 ---
        â•™â”€â”€ 0 â•¾ 1
            â””â”€â•¼ 1
                â””â”€â•¼  ...
        --- directed k=3 ---
        â•™â”€â”€ 0 â•¾ 1, 2
            â”œâ”€â•¼ 1 â•¾ 2
            â”‚   â”œâ”€â•¼ 2 â•¾ 0
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- directed k=4 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 2, 3
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 0, 1
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- directed k=5 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 0, 1, 4
            â”‚   â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 0, 1, 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        )	r&   r   r   r‚   r%   r   r   r   r   )r9   r:   Úkr'   r;   r<   s         r   Ú'test_write_network_text_complete_graphsr‹     s  € Ø€EØŒL€EØð 5ð 5ˆÝŒM×(Ò(¨Ñ+Ô+ˆØˆÐ) !Ð)Ð)Ð)Ñ*Ô*Ð*Ý
Ô˜a e°Ð4Ñ4Ô4Ð4Ð4àð 5ð 5ˆÝŒM×(Ò(¨­B¬JÑ7Ô7ˆØˆÐ' Ð'Ð'Ð'Ñ(Ô(Ð(Ý
Ô˜a e°Ð4Ñ4Ô4Ð4Ð4Ø9Š9UÑÔ€DÝð@	ñBô B÷D ‚eg„gðE ðF TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó¶  — t          j        ¦   «         } |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         g }|j        }t	          |                      ¦   «         ¦  «        }|D ]*} |d|› d¦  «         t          j        | ||gd	¬
¦  «         Œ+d                     |¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nr1   r   r2   r3   rk   rw   z--- source node: r‰   r$   rz   r   ux  
        --- source node: 1 ---
        â•™â”€â”€ 1 â•¾ 4
            â”œâ”€â•¼ 2
            â”‚   â””â”€â•¼ 4 â•¾ 5
            â”‚       â””â”€â•¼  ...
            â”œâ”€â•¼ 3
            â”‚   â”œâ”€â•¼ 5 â•¾ 1
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼ 6
            â””â”€â•¼  ...
        --- source node: 2 ---
        â•™â”€â”€ 2 â•¾ 1
            â””â”€â•¼ 4 â•¾ 5
                â””â”€â•¼ 1
                    â”œâ”€â•¼ 3
                    â”‚   â”œâ”€â•¼ 5 â•¾ 1
                    â”‚   â”‚   â””â”€â•¼  ...
                    â”‚   â””â”€â•¼ 6
                    â””â”€â•¼  ...
        --- source node: 3 ---
        â•™â”€â”€ 3 â•¾ 1
            â”œâ”€â•¼ 5 â•¾ 1
            â”‚   â””â”€â•¼ 4 â•¾ 2
            â”‚       â””â”€â•¼ 1
            â”‚           â”œâ”€â•¼ 2
            â”‚           â”‚   â””â”€â•¼  ...
            â”‚           â””â”€â•¼  ...
            â””â”€â•¼ 6
        --- source node: 4 ---
        â•™â”€â”€ 4 â•¾ 2, 5
            â””â”€â•¼ 1
                â”œâ”€â•¼ 2
                â”‚   â””â”€â•¼  ...
                â”œâ”€â•¼ 3
                â”‚   â”œâ”€â•¼ 5 â•¾ 1
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ 6
                â””â”€â•¼  ...
        --- source node: 5 ---
        â•™â”€â”€ 5 â•¾ 3, 1
            â””â”€â•¼ 4 â•¾ 2
                â””â”€â•¼ 1
                    â”œâ”€â•¼ 2
                    â”‚   â””â”€â•¼  ...
                    â”œâ”€â•¼ 3
                    â”‚   â”œâ”€â•¼ 6
                    â”‚   â””â”€â•¼  ...
                    â””â”€â•¼  ...
        --- source node: 6 ---
        â•™â”€â”€ 6 â•¾ 3
        )
r   r   r8   r&   Úsortedr   r%   r   r   r   )r'   r9   r:   r   rO   r;   r<   s          r   Ú(test_write_network_text_multiple_sourcesrŽ   X  se  € Ý
Œ
‰Œ€AØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ‡J‚Jˆq!ÑÔÐØ€EØŒL€Eõ 1—7’7‘9”9ÑÔ€EØð Bð BˆØˆÐ) !Ð)Ð)Ð)Ñ*Ô*Ð*Ý
Ô˜a e°a°S¸bÐAÑAÔAÐAÐAØ9Š9UÑÔ€DÝð3	ñ5ô 5÷j ‚eg„gðk ðl TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        dt           j        ¬¦  «        } g }|j        }t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nrk   r€   r$   r4   r   u¥   
        â•™â”€â”€ 1
            â””â”€â”€ 0
                â”œâ”€â”€ 2
                â”œâ”€â”€ 3
                â”œâ”€â”€ 4
                â””â”€â”€ 5
        )r   Ú
star_graphr-   r&   r%   r   r   r   rƒ   s        r   Ú"test_write_network_text_star_graphr‘   ¤  s‚   € ÝŒM˜!­"¬(Ð3Ñ3Ô3€EØ€EØŒL€EÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð	ñ	ô 	÷ ‚eg„gð ð TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        dt           j        ¬¦  «        } g }|j        }t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr2   r€   r$   r4   r   uQ   
        â•™â”€â”€ 0
            â””â”€â”€ 1
                â””â”€â”€ 2
        )r   Ú
path_graphr-   r&   r%   r   r   r   rƒ   s        r   Ú"test_write_network_text_path_graphr”   ·  s‚   € ÝŒM˜!­"¬(Ð3Ñ3Ô3€EØ€EØŒL€EÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð	ñô ÷ ‚eg„gð ð TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        ddt           j        ¬¦  «        } g }|j        }t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr3   r   r€   r$   r4   r   u  
        â•™â”€â”€ 5
            â””â”€â”€ 4
                â””â”€â”€ 3
                    â”œâ”€â”€ 0
                    â”‚   â”œâ”€â”€ 1 â”€ 3
                    â”‚   â”‚   â””â”€â”€ 2 â”€ 0, 3
                    â”‚   â””â”€â”€  ...
                    â””â”€â”€  ...
        )r   Úlollipop_graphr-   r&   r%   r   r   r   rƒ   s        r   Ú&test_write_network_text_lollipop_graphr—   Ç  s…   € ÝÔ˜a µ´Ð:Ñ:Ô:€EØ€EØŒL€EÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð		ñô ÷ ‚eg„gð ð TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        dt           j        ¬¦  «        } g }|j        }t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr@   r€   r$   r4   r   uX  
        â•™â”€â”€ 1
            â”œâ”€â”€ 0
            â”‚   â”œâ”€â”€ 2 â”€ 1
            â”‚   â”‚   â””â”€â”€ 3 â”€ 0
            â”‚   â”‚       â””â”€â”€ 4 â”€ 0
            â”‚   â”‚           â””â”€â”€ 5 â”€ 0
            â”‚   â”‚               â””â”€â”€ 6 â”€ 0, 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        )r   Úwheel_graphr-   r&   r%   r   r   r   rƒ   s        r   Ú#test_write_network_text_wheel_graphrš   Ü  s‚   € ÝŒN˜1­2¬8Ð4Ñ4Ô4€EØ€EØŒL€EÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð
	ñô ÷ ‚eg„gð ð TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        dt           j        ¬¦  «        } g }|j        }t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr3   r€   r$   r4   r   uê  
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0
            â”‚   â”‚   â”‚   â””â”€â”€ 7
            â”‚   â”‚   â”‚       â”œâ”€â”€ 6 â”€ 2
            â”‚   â”‚   â”‚       â”‚   â””â”€â”€ 5 â”€ 1
            â”‚   â”‚   â”‚       â”‚       â””â”€â”€ 4 â”€ 0, 7
            â”‚   â”‚   â”‚       â””â”€â”€  ...
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        )r   Úcircular_ladder_graphr-   r&   r%   r   r   r   rƒ   s        r   Ú-test_write_network_text_circular_ladder_graphr   ò  sƒ   € ÝÔ$ QµR´XÐ>Ñ>Ô>€EØ€EØŒL€EÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð	ñô ÷ ‚eg„gð ð  TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó  — t          j        dt           j        ¬¦  «        } g }|j        }t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr3   r€   r$   r4   r   u›	  
        â•™â”€â”€ 15
            â”œâ”€â”€ 0
            â”‚   â”œâ”€â”€ 1 â”€ 15
            â”‚   â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 4 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 9 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 22 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 38 â”€ 4
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 13 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 34 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 39 â”€ 4
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 18 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 30 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”‚   â”œâ”€â”€ 5 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 12 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 29 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 40 â”€ 5
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 14 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 35 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 41 â”€ 5
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 25 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 31 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”‚   â”œâ”€â”€ 7 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 20 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 32 â”€ 2
            â”‚   â”‚   â”‚   â”œâ”€â”€ 10 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 27 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 33 â”€ 2
            â”‚   â”‚   â”‚   â”œâ”€â”€ 16 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 23 â”€ 1
            â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 8 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 21 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 36 â”€ 3
            â”‚   â”‚   â”‚   â”œâ”€â”€ 11 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 28 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 37 â”€ 3
            â”‚   â”‚   â”‚   â”œâ”€â”€ 17 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 24 â”€ 1
            â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”œâ”€â”€ 6 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 19 â”€ 0
            â”‚   â”‚   â”‚   â””â”€â”€ 26 â”€ 1
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        )r   Ú dorogovtsev_goltsev_mendes_graphr-   r&   r%   r   r   r   rƒ   s        r   Ú8test_write_network_text_dorogovtsev_goltsev_mendes_graphr      s†   € ÝÔ/°ÅÄÐIÑIÔI€EØ€EØŒL€EÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð2	ñ4ô 4÷h ‚eg„gði ðj TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óF  — t          j        ddt           j        ¬¦  «        } g }|j        } |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d	¦  «         t          j        | |dd
¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd
¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr1   r2   r   ú"--- directed case, max_depth=0 ---r$   r   ©r5   r#   Ú	max_depthú"--- directed case, max_depth=1 ---ú"--- directed case, max_depth=2 ---r   ú"--- directed case, max_depth=3 ---z"--- directed case, max_depth=4 ---r3   ú$--- undirected case, max_depth=0 ---ú$--- undirected case, max_depth=1 ---ú$--- undirected case, max_depth=2 ---ú$--- undirected case, max_depth=3 ---z$--- undirected case, max_depth=4 ---r   u  
        --- directed case, max_depth=0 ---
        â•™ ...
        --- directed case, max_depth=1 ---
        â•™â”€â”€ 0
            â””â”€â•¼  ...
        --- directed case, max_depth=2 ---
        â•™â”€â”€ 0
            â””â”€â•¼ 1
                â””â”€â•¼  ...
        --- directed case, max_depth=3 ---
        â•™â”€â”€ 0
            â””â”€â•¼ 1
                â””â”€â•¼ 2
                    â””â”€â•¼  ...
        --- directed case, max_depth=4 ---
        â•™â”€â”€ 0
            â””â”€â•¼ 1
                â””â”€â•¼ 2
                    â””â”€â•¼ 3
        --- undirected case, max_depth=0 ---
        â•™ ...
        --- undirected case, max_depth=1 ---
        â•™â”€â”€ 0 â”€ 1
            â””â”€â”€  ...
        --- undirected case, max_depth=2 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1 â”€ 2
                â””â”€â”€  ...
        --- undirected case, max_depth=3 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1
                â””â”€â”€ 2 â”€ 3
                    â””â”€â”€  ...
        --- undirected case, max_depth=4 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1
                â””â”€â”€ 2
                    â””â”€â”€ 3
        )	r   r   r   r&   r%   r|   r   r   r   ©r}   r9   r:   r;   r<   s        r   Ú&test_write_network_text_tree_max_depthr­   I  sZ  € ÝÔ˜a 1µ2´:Ð>Ñ>Ô>€DØ€EØŒL€EØ	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ9Š9UÑÔ€DÝð'	ñ)ô )÷R ‚eg„gðS ðT TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ó4  — t          j        dddd¬¦  «        } g }|j        } |d¦  «         t          j        | |dd ¬¦  «          |d	¦  «         t          j        | |dd
¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd ¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd
¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Né
   g333333Ã?TiÈ  ©ÚdirectedÚseedú%--- directed case, max_depth=None ---r$   r£   r¢   r   r¥   r1   r¦   r   r§   r2   ú'--- undirected case, max_depth=None ---r¨   r©   rª   r«   r   uê	  
        --- directed case, max_depth=None ---
        â•Ÿâ”€â”€ 4
        â•Ž   â”œâ”€â•¼ 0 â•¾ 3
        â•Ž   â”œâ”€â•¼ 5 â•¾ 7
        â•Ž   â”‚   â””â”€â•¼ 3
        â•Ž   â”‚       â”œâ”€â•¼ 1 â•¾ 9
        â•Ž   â”‚       â”‚   â””â”€â•¼ 9 â•¾ 6
        â•Ž   â”‚       â”‚       â”œâ”€â•¼ 6
        â•Ž   â”‚       â”‚       â”‚   â””â”€â•¼  ...
        â•Ž   â”‚       â”‚       â”œâ”€â•¼ 7 â•¾ 4
        â•Ž   â”‚       â”‚       â”‚   â”œâ”€â•¼ 2
        â•Ž   â”‚       â”‚       â”‚   â””â”€â•¼  ...
        â•Ž   â”‚       â”‚       â””â”€â•¼  ...
        â•Ž   â”‚       â””â”€â•¼  ...
        â•Ž   â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- directed case, max_depth=0 ---
        â•™ ...
        --- directed case, max_depth=1 ---
        â•Ÿâ”€â”€ 4
        â•Ž   â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- directed case, max_depth=2 ---
        â•Ÿâ”€â”€ 4
        â•Ž   â”œâ”€â•¼ 0 â•¾ 3
        â•Ž   â”œâ”€â•¼ 5 â•¾ 7
        â•Ž   â”‚   â””â”€â•¼  ...
        â•Ž   â””â”€â•¼ 7 â•¾ 9
        â•Ž       â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- directed case, max_depth=3 ---
        â•Ÿâ”€â”€ 4
        â•Ž   â”œâ”€â•¼ 0 â•¾ 3
        â•Ž   â”œâ”€â•¼ 5 â•¾ 7
        â•Ž   â”‚   â””â”€â•¼ 3
        â•Ž   â”‚       â””â”€â•¼  ...
        â•Ž   â””â”€â•¼ 7 â•¾ 9
        â•Ž       â”œâ”€â•¼ 2
        â•Ž       â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- undirected case, max_depth=None ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2
            â””â”€â”€ 7
                â”œâ”€â”€ 4
                â”‚   â”œâ”€â”€ 0
                â”‚   â”‚   â””â”€â”€ 3
                â”‚   â”‚       â”œâ”€â”€ 1
                â”‚   â”‚       â”‚   â””â”€â”€ 9 â”€ 7
                â”‚   â”‚       â”‚       â””â”€â”€ 6
                â”‚   â”‚       â””â”€â”€ 5 â”€ 4, 7
                â”‚   â””â”€â”€  ...
                â””â”€â”€  ...
        --- undirected case, max_depth=0 ---
        â•™ ...
        --- undirected case, max_depth=1 ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2 â”€ 7
            â””â”€â”€  ...
        --- undirected case, max_depth=2 ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2
            â””â”€â”€ 7 â”€ 4, 5, 9
                â””â”€â”€  ...
        --- undirected case, max_depth=3 ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2
            â””â”€â”€ 7
                â”œâ”€â”€ 4 â”€ 0, 5
                â”‚   â””â”€â”€  ...
                â”œâ”€â”€ 5 â”€ 4, 3
                â”‚   â””â”€â”€  ...
                â””â”€â”€ 9 â”€ 1, 6
                    â””â”€â”€  ...
        )r   Úerdos_renyi_graphr&   r%   r|   r   r   r   r¬   s        r   Ú'test_write_network_text_graph_max_depthr¶     s]  € ÝÔ  D°4¸eÐDÑDÔD€DØ€EØŒL€EØ	€EÐ
1Ñ2Ô2Ð2ÝÔ˜$ U°¸dÐCÑCÔCÐCØ	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
3Ñ4Ô4Ð4ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈdÐSÑSÔSÐSØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ9Š9UÑÔ€DÝðK	ñMô M÷Z ‚eg„gð[ ð\ TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óB  — t          j        dt           j        ¦  «        } g }|j        } |d¦  «         t          j        | |dd ¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d	¦  «         t          j        | |dd
¬¦  «          |d¦  «         t          j        | |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd ¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd
¬¦  «          |d¦  «         t          j        |                      ¦   «         |dd¬¦  «         d                     |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nrk   r³   r$   r£   r¢   r   r¥   r1   r¦   r   r§   r2   r´   r¨   r©   rª   r«   r   uØ	  
        --- directed case, max_depth=None ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 0, 1, 4
            â”‚   â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 0, 1, 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- directed case, max_depth=0 ---
        â•™ ...
        --- directed case, max_depth=1 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â””â”€â•¼  ...
        --- directed case, max_depth=2 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 2 â•¾ 1, 3, 4
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 3 â•¾ 1, 2, 4
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 4 â•¾ 1, 2, 3
                â””â”€â•¼  ...
        --- directed case, max_depth=3 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3, 4
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 3 â•¾ 0, 2, 4
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 4 â•¾ 0, 2, 3
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- undirected case, max_depth=None ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0, 1
            â”‚   â”‚   â”‚   â””â”€â”€ 4 â”€ 0, 1, 2
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- undirected case, max_depth=0 ---
        â•™ ...
        --- undirected case, max_depth=1 ---
        â•™â”€â”€ 0 â”€ 1, 2, 3, 4
            â””â”€â”€  ...
        --- undirected case, max_depth=2 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1 â”€ 2, 3, 4
            â”‚   â””â”€â”€  ...
            â”œâ”€â”€ 2 â”€ 1, 3, 4
            â”‚   â””â”€â”€  ...
            â”œâ”€â”€ 3 â”€ 1, 2, 4
            â”‚   â””â”€â”€  ...
            â””â”€â”€ 4 â”€ 1, 2, 3
        --- undirected case, max_depth=3 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0, 3, 4
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”œâ”€â”€ 3 â”€ 0, 2, 4
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€ 4 â”€ 0, 2, 3
            â””â”€â”€  ...
        )	r   r‚   r   r&   r%   r|   r   r   r   r¬   s        r   Ú(test_write_network_text_clique_max_depthr¸   ù  sX  € ÝÔ˜Q¥¤
Ñ+Ô+€DØ€EØŒL€EØ	€EÐ
1Ñ2Ô2Ð2ÝÔ˜$ U°¸dÐCÑCÔCÐCØ	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
.Ñ/Ô/Ð/ÝÔ˜$ U°¸aÐ@Ñ@Ô@Ð@Ø	€EÐ
3Ñ4Ô4Ð4ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈdÐSÑSÔSÐSØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ	€EÐ
0Ñ1Ô1Ð1ÝÔ˜$×,Ò,Ñ.Ô.°UÀÈaÐPÑPÔPÐPØ9Š9UÑÔ€DÝðF	ñHô H÷P ‚eg„gðQ ðR TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óì  — t          j        dddd¬¦  «        } | j        D ]|}d|› d| j        |         d<   t          |t	          d	¦  «        z   d
z
  ¦  «        | j        |         d<   |dz  dk    r-t          |t	          d	¦  «        z   ¦  «        | j        |         d<   Œ}g }|j        } |d¦  «         t          j        | |ddd ¬¦  «          |d¦  «         t          j        | |ddd ¬¦  «          |d¦  «         t          j        | |ddd ¬¦  «          |d¦  «         t          j        | |ddd ¬¦  «         d                     |¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nrk   gš™™™™™Ù?TiVLir°   zNode(r†   r   r   r1   r   r   r   Úpartz4--- when with_labels=True, uses the 'label' attr ---r$   )r5   r   r#   r¤   z4--- when with_labels=False, uses str(node) value ---Fz3--- when with_labels is a string, use that attr ---z:--- fallback to str(node) when the attr does not exist ---r   uj  
        --- when with_labels=True, uses the 'label' attr ---
        â•™â”€â”€ Node(1)
            â””â”€â•¼ Node(3) â•¾ Node(2)
                â”œâ”€â•¼ Node(0)
                â”‚   â”œâ”€â•¼ Node(2) â•¾ Node(3), Node(4)
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ Node(4)
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- when with_labels=False, uses str(node) value ---
        â•™â”€â”€ 1
            â””â”€â•¼ 3 â•¾ 2
                â”œâ”€â•¼ 0
                â”‚   â”œâ”€â•¼ 2 â•¾ 3, 4
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ 4
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- when with_labels is a string, use that attr ---
        â•™â”€â”€ a
            â””â”€â•¼ c â•¾ b
                â”œâ”€â•¼ `
                â”‚   â”œâ”€â•¼ b â•¾ c, d
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ d
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- fallback to str(node) when the attr does not exist ---
        â•™â”€â”€ 1
            â””â”€â•¼ 3 â•¾ c
                â”œâ”€â•¼ a
                â”‚   â”œâ”€â•¼ c â•¾ 3, e
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ e
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        )
r   rµ   r   r   r   r&   r%   r   r   r   )r   r   r9   r:   r;   r<   s         r   Ú$test_write_network_text_custom_labelr»   ^  s«  € åÔ   C°$¸YÐGÑGÔG€EØ”ð =ð =ˆØ%4¨T _ _ _ˆŒDÔ˜'Ñ"Ý#& t­c°#©h¬h¡¸Ñ':Ñ#;Ô#;ˆŒDÔ˜%Ñ Ø!‰8qŠ=ˆ=Ý(+¨Dµ3°s±8´8©OÑ(<Ô(<ˆEŒK˜Ô˜fÑ%øà€EØŒL€EØ	€EÐ
@ÑAÔAÐAÝÔ˜% e¸À2ÐQUÐVÑVÔVÐVØ	€EÐ
@ÑAÔAÐAÝÔ˜% e¸ÀBÐRVÐWÑWÔWÐWØ	€EÐ
?Ñ@Ô@Ð@ÝÔ˜% e¸ÀBÐRVÐWÑWÔWÐWØ	€EÐ
FÑGÔGÐGÝÔ˜% e¸ÀRÐSWÐXÑXÔXÐXà9Š9UÑÔ€DÝð%	ñ'ô '÷N ‚eg„gðO ðP TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óæ  — t          j        ddt           j        ¬¦  «        } |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      ¦   «         }|                     d„ |j        D ¦   «         ¦  «         g }|j        } |d	¦  «         t          j        | |d
d¬¦  «          |d¦  «         t          j        | |d
dd¬¦  «          |d¦  «         t          j        ||d
d¬¦  «          |d¦  «         t          j        ||d
dd¬¦  «         d 	                    |¦  «        }t          d¦  «                             ¦   «         }||k    sJ ‚d S )Nr3   r   r€   r   éÿÿÿÿéþÿÿÿéýÿÿÿc                 ó(   — g | ]\  }}||k    ¯||f‘ŒS rL   rL   )rN   ÚuÚvs      r   ú
<listcomp>z;test_write_network_text_vertical_chains.<locals>.<listcomp>¥  s%   € ÐGÐGÐG©¨¨AÀÀQÂÀ˜q !˜fÀÀÀr    z--- Undirected UTF ---r$   T)r5   r#   Úvertical_chainsz--- Undirected ASCI ---)r5   r#   rÄ   r+   z--- Directed UTF ---z--- Directed ASCI ---r   uí  
        --- Undirected UTF ---
        â•™â”€â”€ 5
            â”‚
            4
            â”‚
            3
            â”œâ”€â”€ 0
            â”‚   â”œâ”€â”€ 1 â”€ 3
            â”‚   â”‚   â”‚
            â”‚   â”‚   2 â”€ 0, 3
            â”‚   â”œâ”€â”€ -1
            â”‚   â”‚   â”‚
            â”‚   â”‚   -2
            â”‚   â”‚   â”‚
            â”‚   â”‚   -3
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- Undirected ASCI ---
        +-- 5
            |
            4
            |
            3
            |-- 0
            |   |-- 1 - 3
            |   |   |
            |   |   2 - 0, 3
            |   |-- -1
            |   |   |
            |   |   -2
            |   |   |
            |   |   -3
            |   L--  ...
            L--  ...
        --- Directed UTF ---
        â•™â”€â”€ 5
            â•½
            4
            â•½
            3
            â”œâ”€â•¼ 0 â•¾ 1, 2
            â”‚   â•½
            â”‚   -1
            â”‚   â•½
            â”‚   -2
            â”‚   â•½
            â”‚   -3
            â”œâ”€â•¼ 1 â•¾ 2
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 2
                â””â”€â•¼  ...
        --- Directed ASCI ---
        +-- 5
            !
            4
            !
            3
            |-> 0 <- 1, 2
            |   !
            |   -1
            |   !
            |   -2
            |   !
            |   -3
            |-> 1 <- 2
            |   L->  ...
            L-> 2
                L->  ...
        )r   r–   r-   r8   Úto_directedÚremove_edges_fromÚedgesr&   r%   r   r   r   )Úgraph1Úgraph2r9   r:   r;   r<   s         r   Ú'test_write_network_text_vertical_chainsrÊ   ž  s«  € ÝÔ˜q !µ"´(Ð;Ñ;Ô;€FØ
‡O‚OArÑÔÐØ
‡O‚OB˜ÑÔÐØ
‡O‚OB˜ÑÔÐà×ÒÑ!Ô!€FØ
×ÒÐGÐG°´ÐGÑGÔGÑHÔHÐHà€EØŒL€EØ	€EÐ
"Ñ#Ô#Ð#ÝÔ˜& u°"ÀdÐKÑKÔKÐKØ	€EÐ
#Ñ$Ô$Ð$ÝÔØU °DÀTðñ ô ð ð 
€EÐ
 Ñ!Ô!Ð!ÝÔ˜& u°"ÀdÐKÑKÔKÐKØ	€EÐ
!Ñ"Ô"Ð"ÝÔØU °DÀTðñ ô ð ð 9Š9UÑÔ€DÝðE	ñGô G÷N ‚eg„gðO ðP TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  óR  — t          j        ddt           j        ¬¦  «        } g }|j        } |d¦  «         t          j        | |d¬¦  «         d| j        d         d	<    |d
¦  «         t          j        | |d¬¦  «          |d¦  «         |                      dd¦  «         t          j        | |d¬¦  «          |d¦  «         d| j        d         d	<   t          j        | |d¬¦  «         d                     |¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nr   r2   r   ú--- Original ---r$   r4   Tr1   Úcollapseú--- Collapse Node 1 ---ú/--- Add alternate path (5, 3) to collapsed zonerk   ú--- Collapse Node 0 ---r   r   uT  
        --- Original ---
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â”œâ”€â•¼ 3
            â”‚   â”‚   â”œâ”€â•¼ 7
            â”‚   â”‚   â””â”€â•¼ 8
            â”‚   â””â”€â•¼ 4
            â”‚       â”œâ”€â•¼ 9
            â”‚       â””â”€â•¼ 10
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â”‚   â”œâ”€â•¼ 11
                â”‚   â””â”€â•¼ 12
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 13
                    â””â”€â•¼ 14
        --- Collapse Node 1 ---
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â”‚   â”œâ”€â•¼ 11
                â”‚   â””â”€â•¼ 12
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 13
                    â””â”€â•¼ 14
        --- Add alternate path (5, 3) to collapsed zone
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â”‚   â”œâ”€â•¼ 11
                â”‚   â”œâ”€â•¼ 12
                â”‚   â””â”€â•¼ 3 â•¾ 1
                â”‚       â”œâ”€â•¼ 7
                â”‚       â””â”€â•¼ 8
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 13
                    â””â”€â•¼ 14
        --- Collapse Node 0 ---
        â•™â”€â”€ 0
            â””â”€â•¼  ...
        )
r   r   r   r&   r%   r   r8   r   r   r   rƒ   s        r   Útest_collapse_directedrÑ     sH  € ÝÔ˜q AµB´JÐ?Ñ?Ô?€EØ€EØŒL€EØ	€EÐ
ÑÔÐÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø!%€E„K„N:ÑØ	€EÐ
#Ñ$Ô$Ð$ÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø	€EÐ
;Ñ<Ô<Ð<Ø	‡N‚N1aÑÔÐÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø	€EÐ
#Ñ$Ô$Ð$Ø!%€E„K„N:ÑÝÔ˜% e°Ð4Ñ4Ô4Ð4Ø9Š9UÑÔ€DÝð-	ñ/ô /÷^ ‚eg„gð_ ð` TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c                  ób  — t          j        ddt           j        ¬¦  «        } g }|j        } |d¦  «         t          j        | |ddg¬¦  «         d| j        d	         d
<    |d¦  «         t          j        | |ddg¬¦  «          |d¦  «         |                      dd¦  «         t          j        | |ddg¬¦  «          |d¦  «         d| j        d         d
<   t          j        | |ddg¬¦  «         d                     |¦  «        }t          d¦  «         	                    ¦   «         }||k    sJ ‚d S )Nr   r2   r   rÌ   r$   r   )r5   r#   rB   Tr1   rÍ   rÎ   rÏ   rk   rÐ   r   uo  
        --- Original ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 3
            â”‚   â”‚   â”œâ”€â”€ 7
            â”‚   â”‚   â””â”€â”€ 8
            â”‚   â””â”€â”€ 4
            â”‚       â”œâ”€â”€ 9
            â”‚       â””â”€â”€ 10
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â”‚   â”œâ”€â”€ 11
                â”‚   â””â”€â”€ 12
                â””â”€â”€ 6
                    â”œâ”€â”€ 13
                    â””â”€â”€ 14
        --- Collapse Node 1 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1 â”€ 3, 4
            â”‚   â””â”€â”€  ...
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â”‚   â”œâ”€â”€ 11
                â”‚   â””â”€â”€ 12
                â””â”€â”€ 6
                    â”œâ”€â”€ 13
                    â””â”€â”€ 14
        --- Add alternate path (5, 3) to collapsed zone
        â•™â”€â”€ 0
            â”œâ”€â”€ 1 â”€ 3, 4
            â”‚   â””â”€â”€  ...
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â”‚   â”œâ”€â”€ 11
                â”‚   â”œâ”€â”€ 12
                â”‚   â””â”€â”€ 3 â”€ 1
                â”‚       â”œâ”€â”€ 7
                â”‚       â””â”€â”€ 8
                â””â”€â”€ 6
                    â”œâ”€â”€ 13
                    â””â”€â”€ 14
        --- Collapse Node 0 ---
        â•™â”€â”€ 0 â”€ 1, 2
            â””â”€â”€  ...
        )
r   r   r-   r&   r%   r   r8   r   r   r   rƒ   s        r   Útest_collapse_undirectedrÓ   E  sX  € ÝÔ˜q AµB´HÐ=Ñ=Ô=€EØ€EØŒL€EØ	€EÐ
ÑÔÐÝÔ˜% e°¸a¸SÐAÑAÔAÐAØ!%€E„K„N:ÑØ	€EÐ
#Ñ$Ô$Ð$ÝÔ˜% e°¸a¸SÐAÑAÔAÐAØ	€EÐ
;Ñ<Ô<Ð<Ø	‡N‚N1aÑÔÐÝÔ˜% e°¸a¸SÐAÑAÔAÐAØ	€EÐ
#Ñ$Ô$Ð$Ø!%€E„K„N:ÑÝÔ˜% e°¸a¸SÐAÑAÔAÐAØ9Š9UÑÔ€DÝð-	ñ/ô /÷^ ‚eg„gð_ ð` TŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r    c            
   #   óô  K  — ddl }  | j        d¦  «        }d}dD ][}|rt          j        nt          j        }t          d¦  «        D ]‚} |¦   «         }|                     t          |¦  «        ¦  «         |V — |dk    rJdD ]0}t          |¦  «        D ]}t          j        ||||¬¦  «        }|V — ŒŒ1t          j        ||¦  «        V — Œƒt          j	        d|¬	¦  «        V — t          j
        d
d|¬¦  «        V — |syt          j        d|¬	¦  «        V — t          j        d|¬	¦  «        V — t          j        dd|¬	¦  «        V — t          j        d|¬	¦  «        V — t          j        d|¬	¦  «        V — Œ]dS )zP
    Generate a gauntlet of different test graphs with different properties
    r   Nip7:r2   ©r   r1   é   )gš™™™™™¹?g333333Ó?g      à?gffffffæ?gÍÌÌÌÌÌì?r°   r€   r1   r   r3   rk   r   r@   )rn   ro   r   r   r-   Úranger7   rµ   r‚   r“   r   rœ   r   r–   r™   rŸ   )	rn   rs   Únum_randomizedr±   ÚclsÚ	num_nodesr   Úpr²   s	            r   Úgenerate_test_graphsrÜ   ˆ  sé  è è € ð €M€M€Mà
ˆ&Œ-˜	Ñ
"Ô
"€CØ€Nàð Kñ KˆØ$Ð2bŒjˆj­"¬(ˆå˜r™œð 	8ð 	8ˆIàC‘E”EˆEØ× Ò ¥ yÑ!1Ô!1Ñ2Ô2Ð2ØˆKˆKˆKð ˜1Š}ˆ}Ø2ð $ð $AÝ % nÑ 5Ô 5ð $ð $˜Ý "Ô 4Ø% q°8À#ð!ñ !ô !˜ð $˜˜˜˜ð	$õ Ô'¨	°3Ñ7Ô7Ð7Ð7Ð7øåŒm˜A¨CÐ0Ñ0Ô0Ð0Ð0Ð0ÝÔ  a°cÐ:Ñ:Ô:Ð:Ð:Ð:Øð 	KÝÔ*¨1¸3Ð?Ñ?Ô?Ð?Ð?Ð?Ý”- °Ð4Ñ4Ô4Ð4Ð4Ð4ÝÔ# A q°sÐ;Ñ;Ô;Ð;Ð;Ð;Ý”. °Ð5Ñ5Ô5Ð5Ð5Ð5ÝÔ5°aÀcÐJÑJÔJÐJÐJÐJùð7Kð Kr    ©rÄ   r+   c                 ó    — g | ]}d D ]}||f‘ŒŒS )rÕ   rL   )rN   rÄ   r+   s      r   rÃ   rÃ   ²  sD   € ð 	
ð 	
ð 	
àØ$ð	
ð 	
ð ð ˜jÐ)ð	
ð 	
ð 	
ð 	
r    rÕ   c                 ój  — ddl m} t          ¦   «         D ]}t          j        |d„ |j        D ¦   «         ¦  «        }t          t          j        || |¬¦  «        ¦  «        } ||¦  «        }	 |j        |j        k    sJ ‚|j        |j        k    sJ ‚Œ{# t          $ r t          j
        |¦  «         ‚ w xY wdS )zÍ
    Write the graph to network text format, then parse it back in, assert it is
    the same as the original graph. Passing this test is strong validation of
    both the format generator and parser.
    r   )Ú_parse_network_textc                 ó.   — i | ]}|t          |¦  «        “ŒS rL   )Ústr)rN   rO   s     r   rP   z0test_network_text_round_trip.<locals>.<dictcomp>Â  s    € Ð(HÐ(HÐ(H°q¨­C°©F¬FÐ(HÐ(HÐ(Hr    rÝ   N)Únetworkx.readwrite.textrà   rÜ   r   rQ   r   rp   r   rÇ   Ú	Exceptionr%   )rÄ   r+   rà   r   r9   Únews         r   Útest_network_text_round_tripræ   ¯  sö   € ð  <Ð;Ð;Ð;Ð;Ð;å%Ñ'Ô'ð ð ˆÝÔ  Ð(HÐ(H¸E¼KÐ(HÑ(HÔ(HÑIÔIˆÝÝÔ$Ø À:ðñ ô ñ
ô 
ˆð
 "Ð! %Ñ(Ô(ˆð	Ø”9 ¤Ò+Ð+Ð+Ð+Ø”9 ¤Ò+Ð+Ð+Ð+Ð+øÝð 	ð 	ð 	ÝÔ! %Ñ(Ô(Ð(Øð	øøøðð s   Á+$BÂ B0))rn   Ú	itertoolsr   Útextwrapr   ÚpytestÚnetworkxr   r   r.   r=   rI   rS   rW   r]   rg   ri   ru   r~   r„   r‡   r‹   rŽ   r‘   r”   r—   rš   r   r    r­   r¶   r¸   r»   rÊ   rÑ   rÓ   rÜ   ÚmarkÚparametrizeÚtupleræ   rL   r    r   ú<module>rî      s¡  ðØ €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à Ð Ð Ð ð$*ð $*ð $*ðN	:ð 	:ð 	:ðð ð ð0Vð Vð Vðr/ð /ð /ðd!ð !ð !ðH.ð .ð .ðbPð Pð Pðfeð eð eðPKð Kð Kð\Eð Eð EðP!ð !ð !ðHð ð ð6Pð Pð PðfIð Ið IðXð ð ð&ð ð ð ð ð ð*ð ð ð,ð ð ð2;ð ;ð ;ð|Cð Cð CðLgð gð gðTbð bð bðJ=ð =ð =ð@að að aðH@ð @ð @ðF@ð @ð @ðF$Kð $Kð $KðN „×ÒØ%Ø	€Eð	
ð 	
à#)ð	
ñ 	
ô 	
ñô ñ	ô 	ðð ñ	ô 	ðð ð r    