This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3220SF: Client programs are periodically reconnecting to CC3220SF based server

Part Number: CC3220SF

Hello!

I wrote a program for CC3220SF LAUNCHXL based on the network terminal and cloud ota examples.

The program works as follows:
1. The client program running on the computer connects to LaunchPad server socket by WiFi and sends commands to the device
2. LaunchPad decodes and transmits commands to the device by UART
3. The device responds to commands by UART
4. LaunchPad encrypts and transmits data by WiFi to an client program

When there is only one connection to the LaunchPad, this program works stably and there is no reconnection for at least a day.
When there is more than one connection, client programs are periodically reconnected to the LaunchPad.
Reconnections become more frequent when connecting a new copy of the client program.
After a while, something stabilizes and reconnections become less frequent.
When connecting another copy of the client program, the situation repeats.
If I remove the line usleep(1000); after for(i = 0; i <16; i ++) , the number of reconnections increases dramatically.
The client program reconnects if there is no response from the server within 1 second.

Why client programs are reconnecting, when there is more than one connection?

Code Composer Studio 10.2.0, SimpleLink CC32xx SDK 4.30.00.06

Here's my source code regarding data exchange by WiFi:

int32_t TCPServerInit(sockAddr_t *sAddr, uint16_t port)
{
    int32_t sock;
    int32_t status;
    int32_t nonBlocking = TRUE;
    /* Contains the local ip address and port */
    SlSockAddr_t    *sa;
    int32_t addrSize;


    /* filling the TCP server socket address */
    sAddr->in4.sin_family = SL_AF_INET;

    /* Set the server's port:
       We'll receive connection requests on this port */
    sAddr->in4.sin_port = sl_Htons(port);
    sAddr->in4.sin_addr.s_addr = SL_INADDR_ANY;

    sa = (SlSockAddr_t*)sAddr;
    addrSize = sizeof(SlSockAddrIn_t);

    /*
     *  Open a TCP socket:
     *  Since TCP is a connection oriented channel,
     *  the opened socket would serve as 'welcome' socket,
     *  on which we'll receive connection requests from clients.
     */
    sock = sl_Socket(sa->sa_family, SL_SOCK_STREAM, TCP_PROTOCOL_FLAGS);
    ASSERT_ON_ERROR(sock, SL_SOCKET_ERROR);

    /* Bind socket to server's port */
    status = sl_Bind(sock, sa, addrSize);
    if(status < 0)
    {
        UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, status,
                   SL_SOCKET_ERROR);
        sl_Close(sock);
        return(-1);
    }

   /* 'Listen' signify that wer'e ready to receive connection's from clients */
    status = sl_Listen(sock, 0);
    if(status < 0)
    {
        UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, status,
                   SL_SOCKET_ERROR);
        sl_Close(sock);
        return(-1);
    }

    /* Set socket as non-blocking socket (if needed):
     * Non-blocking sockets allows user to handle other tasks rather than block
     * on socket API calls.
     * If an API call using the Non-blocking socket descriptor
     * returns 'SL_ERROR_BSD_EAGAIN' -
     * this indicate that the user should try the API again later.
     */
    nonBlocking = TRUE;
    status =
        sl_SetSockOpt(sock, SL_SOL_SOCKET, SL_SO_NONBLOCKING, &nonBlocking,
                      sizeof(nonBlocking));
    if(status < 0)
    {
        UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, status,
                   SL_SOCKET_ERROR);
        return(-1);
    }

    return sock;
}

typedef union
{
    uint32_t ipv4;          /* Ipv4 Address */
    uint8_t ipv6[16];       /* Ipv6 Address */
}ip_t;


SlSockAddr_t *IP2SlSockAddr(uint8_t sl_fa, uint16_t portNumber, ip_t ipAddress, sockAddr_t *sAddr)
{
    // filling the TCP server socket address
    sAddr->in4.sin_family = SL_AF_INET;

    // Since this is the client's side,
    // we must know beforehand the IP address
    // and the port of the server wer'e trying to connect.
    sAddr->in4.sin_port = sl_Htons((unsigned short)portNumber);
    sAddr->in4.sin_addr.s_addr = sl_Htonl((unsigned int)ipAddress.ipv4);

    return (SlSockAddr_t*)sAddr;
}

int32_t TCPClientInit(uint8_t sa_family)
{
    int32_t sock;
    int32_t status;
    int32_t nonBlocking;

    // Get socket descriptor - this would be the
    // socket descriptor for the TCP session.
    sock = sl_Socket(sa_family, SL_SOCK_STREAM, TCP_PROTOCOL_FLAGS);
    ASSERT_ON_ERROR(sock, SL_SOCKET_ERROR);

    // Set socket as non-blocking socket (if needed):
    // Non-blocking sockets allows user to handle
    // other tasks rather than block
    // on socket API calls.
    // If an API call using the Non-blocking socket descriptor
    // returns 'SL_ERROR_BSD_EAGAIN' -
    // this indicate that the user should try the API again later.
    nonBlocking = TRUE;
    status = sl_SetSockOpt(sock, SL_SOL_SOCKET, SL_SO_NONBLOCKING, &nonBlocking, sizeof(nonBlocking));

    if(status < 0)
    {
        UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, status,
                   SL_SOCKET_ERROR);
        sl_Close(sock);
        return(-1);
    }

    return sock;
}

void *appThread(void *arg0)
{
    uint8_t run_first = 1;

    int32_t server_sock;

    /* Contains the ip address and port of the connected peer. */
    static SlSockAddr_t    *csa;
    static sockAddr_t sAddr;
    static int32_t addrSize;
    int32_t ret;
    uint32_t ans;
    int32_t newsock = -1;

    static uint8_t server_states[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    uint8_t *psrvstate;
    uint32_t uart_send_size;
    uint32_t *pusendsz;

#define server_state *psrvstate

    static uint32_t socket_sizes[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    uint32_t *psocksz;

#define socket_size *psocksz

    static uint32_t socket_flags[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    uint32_t *psockfl;

#define socket_flag *psockfl

    int32_t status;
    static int32_t client_socks[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int32_t *pclsock;
    static uint8_t client_states[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    uint8_t *pclstate;

#define client_sock *pclsock
#define client_state *pclstate

    uint8_t queue_state;
    uint16_t queue_size;
    uint8_t *queue_bufptr;
    static uint8_t queue_items[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

#define queue_item queue_items[i]

...

    while(1)
    {
        usleep(1000);

        if(run_first)
        {
            server_sock = TCPServerInit(&sAddr, 2612);

            csa = (SlSockAddr_t*)&sAddr;
            addrSize = sizeof(SlSockAddrIn_t);

            if(server_sock >= 0)
                run_first = 0;
        }
        else
        {
            newsock = sl_Accept(server_sock, csa, (SlSocklen_t*)&addrSize);

            if(newsock == SL_ERROR_BSD_EAGAIN)
            {
                //break;
            }
            else if(newsock < 0)
            {
                server_states[newsock] = 0;
            }
            else
            {
                UART_PRINT("Connected to client %d: ", newsock);

                sAddr.in4.sin_addr.s_addr = sl_Htonl(sAddr.in4.sin_addr.s_addr);
                PrintIPAddress(FALSE,(void*)&sAddr.in4.sin_addr);

                UART_PRINT(lineBreak);

                if(newsock < 16)
                {
                    server_states[newsock] = 1;
                }
            }

uint8_t i = 0;
            for(i = 0; i < 16; i++)
            {
usleep(1000);

                socketBuf = sockbuf[i];
                psrvstate = &server_states[i];
                psocksz = &socket_sizes[i];
                psockfl = &socket_flags[i];

                switch(server_state)
                {
                case 0:
                    // Not connected
                    break;
                case 1:
                    ret = sl_Recv(i, socketBuf, MAX_BUF_SIZE, 0);

                    if(ret == SL_ERROR_BSD_EAGAIN)
                    {
                        break;
                    }
                    else if(ret < 0)
                    {
                        UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, ret,
                                   BSD_SOCKET_ERROR);
                        UART_PRINT("Socket %d closed\n\r", i);

                        sl_Close(i);

                        server_state = 0;

                        break;
                    }
                    else if(ret == 0)
                    {
                        UART_PRINT("TCP Client (socket %d) closed the connection \n\r", i);

                        sl_Close(i);

                        server_state = 0;

                        break;
                    }
					
                    uart_send_size = ret;

                    queue_item = AddToQueue(socketBuf, uart_send_size, socketBuf, 0);

                    server_state = 2;

                    break;
                case 2:
                    queue_state = QueueState(queue_item);

                    if(queue_state >= ready)
                    {
                        queue_size = QueueSize(queue_item);
                        socket_size = queue_size;
                    }
                    else
                        break;
                case 3:
                    Encrypt((char*)socketBuf, (char*)socketBuf, socket_size);
					
                    ret = sl_Send(i, socketBuf, socket_size, 0);
                    if(ret == SL_ERROR_BSD_EAGAIN)
                    {
                        break;
                    }
                    else if(ret < 0)
                    {
                        UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, ret,
                                   SL_SOCKET_ERROR);
                        UART_PRINT("Socket %d closed\n\r", i);

                        sl_Close(i);

                        server_state = 0;

                        break;
                    }

                    server_state = 1;

                    break;
                }
            }
        }
    }
}
 

Also, sometimes there is an error Error [-2] at line [1531] in function [CheckLanConnection] in the file cloud_ota.c
Line 1531 corresponds to the code

    /* Ping the GW */
    retVal = sl_NetAppPing((SlNetAppPingCommand_t*)&pingParams, \
                           SL_AF_INET, (SlNetAppPingReport_t*)&pingReport, \
                           SimpleLinkPingReport);
    ASSERT_ON_ERROR(retVal);

When trying to update, the program rarely hangs on the line LOOP_FOREVER (); in the cloud_ota.c file

        if(NULL != pEntry->p_evtHndl)
        {
            if(pEntry->p_evtHndl() < 0)
            {
                UART_PRINT("Event handler failed..!! \r\n");
                LOOP_FOREVER();
            }
        }


  • Hi,

    How much data is being sent / received by each of the clients?

    Is it possible that 2 clients throughput is close to the over-the-air bandwidth which cause the disconnections? or maybe your application is starving one connection (e.g. you are not getting to read from it for a long time, till the buffer gets full and the peer disconnects eventually). 

    We will need to check air sniffer logs or NWP logs (see chapter 20.1 in www.ti.com/.../swru455).

    Who triggers the disconnection? the launchpad or the clients?

    i'm not sure what is the -2 error code, please debug inside the sl_NetAppPing (sources are available in the simplelink project). The NWP log may help to understand this as well. 

    The  pEntry->p_evtHndl() issue also needs investigation. Please check the value (should be a function address). Also  check the values of "pCtx->currentState" and "event" in such case.

    Br,

    Kobi

  • Each of the clients sends and receives less than 2 * 1000 bytes (Tx and Rx) (on average 100..200 bytes) every 5..10 ms. In the case of 5 clients - less than 400,000 bytes per second. Reconnections occur even with two clients.
    This does not exceed the bandwidth of the wireless network. This client program work stably with the device through an IP module based on WIZnet w5500 (up to 7 sockets).
    Apparently, the client initiates a reconnection (the client program reconnects if there is no response from the server for 3 attempts, 1 second for each attempt).
    I attach the NWP log when 5 clients are connected.
    This problem is currently the main one. I will investigate the rest of the problems later.

    7077.putty.log
    "!
    � -�-1{�(	��	��
    �
    
    
    �
    �	-�-1{�( Lc
    �
    �
    �
    ���
    �!
    '�/sys/certstore.lst
    ��J
    �
    
    �
    -��J-��J�-�	�J����
    �*��0
    �
    �	�
    �*� &�7��e*�����y��
    �*� �q�B�0��
    �	��
    �
    �
    �
    '�/sys/servicepack.ucf
    ���`
    �
    - $B
    �!
    '�/sys/ucf_signatures.bin
    ��Ql-��Ql-��Ql4-��Ql4�-�	�Ql
    ��
    �
    �!
    '�/sys/servicepack.ucf
    ���`
    �
    -���`!-���`-���`x-���`p
    �
    �
    �
    �
    �
    �
    �
    �
    �
    �
    ���&	�-���`'�������
    �*�� *�� �*�� �*�	 �%*�`*	 
    �
    �
    �-���`-���`x-���`p
    �
    �
    �-���`�B����
    �����-�	��`-�
    ��
    ��)��`aaA
    �-�-1{�(
    �!
    '�/sys/certstore.lst
    ��J
    �
    
    �
    -��J
    �-��J�-�	�J��
    �
    '�@@.tmp
    �l�U��e(
    �
    '�/tmp/fcon.ssid
    �>��e(��e(`aaA
    	
    �!
    '�/sys/mdmpcfg.ini
    ��I��Fe(
    �!
    '�/sys/pmcfg.ini
    �I��Fe(
    \
    a"<b*��m�
    �
    �
    '�/sys/servicepack.ucf
    ���`
    �
    - $B
    �!
    '�/sys/ucf_signatures.bin
    ��Ql-��Ql
    �-��Ql4-��Ql4�-�	�Ql
    ��
    �
    �!
    '�/sys/servicepack.ucf
    ���`
    �
    -���`!
    �-���`-���`x-���`p
    �
    �
    �
    �
    �
    �
    �
    �-���`"�*�0
    �!
    '�/sys/ipcfg.ini
    ���-���
    �-���4-���4�-�	��
    ��
    �!
    '�/sys/mode.cfg
    ���I-���I
    �-���I4-���I4P-�	��I
    ��
    Q
    �
    �7�`  7�` $ @M7�``q H7�`�� l7�`� @q7�`T � 7�`�'  7w@  �&
    2�`��		
    �
    � 
    f�		
    g��		
    �!
    '�/sys/devname.cfg
    ��c-��c
    �-��c4-��c4b-�	�c
    ��
    	
    
    
    
    �����.���	�
    �
    �
    �!
    '�/tmp/phy.cal
    �]��-�]��
    �
    ����PPPPPP P@P�PS�
    
    ��
    
    
    �.�1
    �!
    '�/sys/macadd.bin
    ��q
    �Fe(5V��2$��y�	
    �
    �!
    '�antselcfg
    �֦	�Fe(-���`|
    �-���`���!-���`��!
    �
    �-���`"���!�-���` "�\-���`("\��.�\�-���`�&
    ��-���`�&�
    �
    �-�	��`-�
    �-�]����.����-�]������
    �!
    '�/sys/sign.bin
    �4s��Fe(-�]���-�	]����
    ���.�������
    � �!.
    !�
    ��
    �
    !l 
    �
    ��	!
    �
    '�/sys/rxfltr.ini
    ������e(��e(
    �
    '�/sys/rxfltr.ini
    ������e(��e(�A
    �
    '�/sys/rxfltr.ini
    ������e(��e(�A�A"�A�A�A�A�A�A�B�B	
    
    �!
    '�/sys/httpsrv.cfg
    �F�-�F�
    �-�F�4-�F�4�-�	F���
    ��� ���� �	
    �
    �P
    
    �!
    '�/sys/mdns.cfg
    �[\�Fe(B�B��B��A�A�A�B����P�:.C
    %.`
    �!
    '�/sys/p2p.cfg
    �o�
    �%�
    g�	.�	&
    �!
    '�/sys/date_time.cfg�Fe(
    �
    >(�Fe(3a.0
    &17QR==�(�
    .2�"āBB��,3.'��"āBB��,.'��.."āBB��,..:..'..?4*, de�*, ���.*, ,-�*, ���.
    *...r2`aaA
    s6)	)W$e�xV.
    �\��
    *.p
    �!
    '�/sys/stacfg.ini
    �TU-�TU
    �-�TU4-�TU4t-�	TU
    ��
    K
    J#
    �#
    �!
    '�/sys/pref.net
    ��-��
    �-��4-��4-�	��D
    Y#MGTS
    �"MGTS
    �
    Y#RT-WRN
    `
    Y#MGTS
    �"MGTS
    �
    Y#RT-Wx�P'�`9
    "
    T��.R
    ")	f�
    
    0A6f)	f
     
    
    **"*".$RT-Wr
    )"++./����0#RT-W>�=.$RT-W
    H
    
    �"RT-W
    �+.$RT-Wr
    )"++./����0#RT-W>�=r&&
    )"004'�
    "�+>�=�.� 
    8#RT-W
    �L$RT-WM4'�
    "�+"Ł$�""Ł$a"9)'�`9q
     �
    
    �
    ��	��>�= $.��.��1"r
    *]"<*�"
    Z") .$RT-W#�
    Tr
    )",,
    �>�=�	"ā��0"Ł���*"ā��0.$RT-W�"ā1�0.E��!."$D��F�.#����...?"�r""
    )"7>�=...=.=).0.1 �!r!!>�=r  >�=r>�=,r
    )">�=9)'�`9*, eg��*, -.��"Ł$�!'�`9"Ł	�-
     #yD�-��$ y"ā�0"Ł$
    "*?"�r""
    )""Ł$�!"Ł�	�-"Ł$�-
     #cD�-��$ c"ā�0"ā.>�="āBB��,	'�`9"ā."āBB��,�*>�=5	�	kA"�"F���RT-W6�L)	�
    �L$RT-WM"�`�
    �!
    '�/sys/dhcp.bin
    �y
    -�y
    
    �-�y
    4-�y
    4�-�	y
    ���`�y� �2�@�� 2����O��2���F�������Q2����P'��j��2��X¨XbTX��*w��*�$���������
    �$��2�`��P'�Q,!2�`���6%)	%
    �!
    '�/tmp/table.arp
    �l�%-�l�%
    �-�l�%4-�l�%4�-�	l�%��2�@���2���D�F��'�`9	*, ���*, gh���*, .4���*, ���*, hi���*, 4.���"Ł$
    "r�A.	
    N$�
    '!.
    �)��-G$RT-WH$iFi_I$46C7J$D��KF��.F"B�*]"<*�"
    Z"d.3�.�
    ��
    '.-"ā��0.2��
    �./2�@��@82�b��D�F��)	!�-T!!���6!)	!*]"<*�"
    Z"d
    (
    
    *w��*�$���������
    �$��2�`��P'�Q2�`���
    �
    "�A��*]"<*�"
    Z"d.$RT-W.*]"<*�"
    Z"d.$RT-W*]"<*�"
    Z"d�
    �*]"<*�"
    Z"d
    
    	��
    �*]"<*�"
    Z"d
    
    	�
    �*]"<*�"
    Z"d
    
    	
    �*]"<*�"
    Z"d6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	��� g�6)	)	��6)	�
    �)	���� �	6)	)	��6)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	
    
    	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	
    �*]"<*�"
    Z"d)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	�6)	�6�)	)	!�-T!!���6!)	!�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	2�`
    ����U���2�@
    ��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	0@$�`,�,�*]"<*�"
    Z"d)	�6)	��� �	g��g��6)	)	
    �6
    z_%)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	71�����Z`(\�8	v"�w"B�
    x"
    y"
    �
    �"0��"0��"!
    c"1
    �!//
    �!�
    
    �!zz�!z�zW"�A�X
    �a��:�
    
    '('#B�&72��2΀�F�Ђ�O*]"<*�"
    Z"d�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	*]"<*�"
    Z"d�
    �*]"<*�"
    Z"d0@$�`,�,�$�`,�,�*]"<*�"
    Z"d)	�6)	��� �	g��g��6)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
     $z,�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	�
    �*]"<*�"
    Z"d)	�6)	�6�)	*]"<*�"
    Z"d)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	0@$�`\l,�$�`�f,�$�`�f,�)	�6)	��� �	g��g��6)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	0@$�`�O,�$�`�O,�$�`�O,�$�`$J,�)	�6)	��� �	g��g��6)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z}�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�)	�6)	��� 	�	g��g��6)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	�6)	�6�)	)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	71�h�����Z`(\�5	v"�w"d]
    �
    x"
    y"
    �
    �"WY�"A�D��"
    c"QH
    �!�!"C
    �!zz�!z�zW"�A,�
    �'���F�
    
    '('#B�&72��2΀�F�Ђ�O)	�6)	�6�)	0@$�`�O,�$�`�O,�$�`�O,�$�`$J,���k0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�)	�6)	6)	.��0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�
    Pg��)	�6)	��� 	�	g��g��6)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	"ā��0./)	�6)	�6�)	./"ā��0)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	./"ā��0)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	0@$�`�O,�$�`�O,�$�`�O,�$�`$J,��0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�)	�6)	��� 
    �	g��g��6)	�k)	�6)	6)	.��0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�
    Pg��)	�6)	�6�)	)	�6)	�6�)	�
    �0@$�`�O,�$�`�O,�$�`�O,�$�`$J,��*]"<*�"
    Z"d�k6
    z�S*]"<*�"
    Z"d�
    �*]"<*�"
    Z"d0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�*]"<*�"
    Z"d)	�6)	6)	.��0@$�`�>,�$�`�>,�$�`�>,�$�`�>,�$�`�>,�
    Pg��)	�6)	���	 	�		g��g��6)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z)�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�)	�6)	�6�)	71������Z`(\�6	v"o�w"1
    x"
    y"
    �
    �"a�"T[L�
    �"�c"R
    �!�!$N
    �!zz�!z�zW"�A,�
    �'��;R�
    
    '('#B'72��2΀�F�Ђ�O)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	
    �)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6")	"
    
    �*")	K�
    �
    �!�
    6K$0)	K$)	!�-T!!���6!)	!)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	6
    z��)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	)	�6)	�6�)	

  • The numbers you provided don't adds up (according to the interval, each client sends and receive 400KB), but anyway this numbers can't be calculated as is against the total bandwidth. 

    Can you provide an air sniffer log to better understand what's going on over the air?

  • I understand that these numbers are not adds up.
    I estimated the maximum channel load as an illustration of the fact that even the worst case exchange cannot exceed the bandwidth of the wifi channel.
    The upper layer protocol works on a request-response principle, somewhat similar to modbus.
    The period of this exchange with one client for the program (on average 100..200 bytes request and response) given in the first message is about 60 ms (10 ms with the commented line usleep(1000) inside the for(i = 0; i <16; i ++) loop)
    In my opinion, this fundamentally cannot exceed the WiFi bandwidth.
    Are there any restrictions on the exchange imposed by the CC3220SF hardware or the software library?
    Have you seen my NWP log?
    Did this provide any additional information to understand the problem?
    I could provide a sniffer log, but I don't know how to get it.
    Which sniffer should I use?
    Is there any guide on how to get a sniffer log for CC3220SF, like a guide for a NWP log?

  • I checked the NWP log and couldn't exactly understand the problem (i can only see the accept requests, not the actual data transfer that is not logged).

    Sniffing of 802.11 traffic is done through a commercial sniffer. You can check the free wireshark and look for supported adapters.

    Can you send the terminal log (with some more logs to better understand the situation, e.g. print the socket number / index + status + sl_recv/sl_send return code)?

    Hopefully this will not change too much the behavior. you can remove the usleep.

    when using multiple sockets the buffer per socket is divided so more issues are possible but the exact problem here is not straightforward.

    br,

    Kobi 

  • I got uart and wireshark logs for two client programs. The usleep line has been removed - reconnections occur approximately once per second.
    The last two lines in the uart log are the regular shutdown of client programs.
    I chose uart terminal having timestamp - Terminal v1.9b by Br@y++. But it does not display data quickly enough if I add exchange data to the log.
    Therefore, the program displays only events and an error code when reconnecting.
    According to the log, reconnection always occurs when the sl_Recv function returns 0.

    UART log:

    9:17:40.816> Connected to client 1: 192.168.1.71
    9:17:41.376> Connected to client 2: 192.168.1.71
    9:17:41.626> TCP Client (socket 1) closed the connection. sl_Recv return 0. Server state 1
    9:17:41.626> Connected to client 3: 192.168.1.71
    9:17:42.161> TCP Client (socket 2) closed the connection. sl_Recv return 0. Server state 1
    9:17:42.161> Connected to client 4: 192.168.1.71
    9:17:44.876> TCP Client (socket 3) closed the connection. sl_Recv return 0. Server state 1
    9:17:44.876> Connected to client 5: 192.168.1.71
    9:17:45.473> TCP Client (socket 4) closed the connection. sl_Recv return 0. Server state 1
    9:17:45.473> Connected to client 6: 192.168.1.71
    9:17:48.189> TCP Client (socket 5) closed the connection. sl_Recv return 0. Server state 1
    9:17:48.189> Connected to client 7: 192.168.1.71
    9:17:48.728> TCP Client (socket 6) closed the connection. sl_Recv return 0. Server state 1
    9:17:48.728> Connected to client 8: 192.168.1.71
    9:17:51.251> TCP Client (socket 7) closed the connection. sl_Recv return 0. Server state 1
    9:17:51.612> TCP Client (socket 8) closed the connection. sl_Recv return 0. Server state 1

    Wireshark log (rename to wireshark.pcapng)

    wireshark.pcapng.log
    
    
    �M<+��������6Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz (with SSE4.2)64-bit Windows 8.1, build 9600.Dumpcap (Wireshark) 2.5.1 (v2.5.1-0-gb6809353)�|��2\Device\NPF_{12ADD786-35B7-499A-8D0B-367CFA9F2196}	64-bit Windows 8.1, build 9600|d����BB����y�܅���UE4�@�c5��G��C��
    4�ؾ1� .��d`�!���>>܅���U����y�E0@��v��C��G
    4����_�ؾ2p�,���`X�����66����y�܅���UE(�@�c@��G��C��
    4�ؾ2��`P��E�Xh�:���FF����y�܅���UE8�@�c/��G��C��
    4�ؾ2��`P����I���-B,18cԹ��h���l����܅���U����y�E�A�ud��C��G
    4����`�ؾBP�,�*�D��Bo
    �z�����V n�?�,�X�>`��M�ءHO��\��+���{���٢���[��Ǵ�R��X����	��&v�ˈTG��O�J�t�I�F�ξl��=�
    �f��M�e��O���N��h�Mv��FF����y�܅���UE8�@�c.��G��C��
    4�ؾB���P�pR���� �v��l�B,�@�hX���66܅���U����y�E(A��uO��C��G
    4������ؾRP}x��Xh�B���FF܅���U����y�E8B|�ti��C��G
    4������ؾRP�,�~����{�d�x�6���hh����FF����y�܅���UE8�@�c-��G��C��
    4�ؾR���P�`�����u�/]$_��hh�����FF܅���U����y�E8Ca�s���C��G
    4������ؾbP�,ô4(��K�p�wB9;�Fhx�T���VV����y�܅���UEH�@�c��G��C��
    4�ؾb��P�P�����w�S�.}�6L&�V�f��t��2�	ҐxX�⻅�66܅���U����y�E(C��s��C��G
    4�����ؾ�P}x�yXH��1��&&܅���U����y�ED��nS��C��G
    4�����ؾ�P�,&��N_�r�2��;`tv���x5L�"�~<�ȖQ�<u�1D�,�N���a��亰��qpC�[���-�Qȗ���T&)$��$�����a�J��b���.��$���VIQR�tфʎ�i&^����TH�U.1%�]N�$��;_^�ŸU���C��
    ��4��nz+e���>�z�@�F���h�{�f�gԆ��ok�( ��t��X�B�V���@���,�ٳM�(�e�k��|	SΊYT���.+QѰ�x�
    >z鰍�†g`]�G�e�d��3W�»"�:F,ɵ�I�r�'].�
    ă�<�X����ۺ�71y��u���>ӣ�y��C�7�I`C�?��&#�K057�Q�Mp�5����gZ������T�A,��JǴ�t����I��@��Le���am��p+��>e�ݞ�����g��O"��{2�S�P���u|�1'�7?������*�@U��&E)�O��#!�?r&SL!�P�,�qw��g�����9�.�_2��%Ѡ����7�a0�zF�n&2:���R{�ߞu"+�H�f���'��
    c��e�o/�($n`�ìe��*N�Y�]�A��ņ���Yغ��G;
    a��F-0X^�����7�*���"g.��Sa��X���]���U�u���fZ_$��4LF�_��ϵ�:��^��;A���g�E�Ͼ]��wN7�S{oE�q(:�
    y�+F)J,���Df���ږ�[l�X����.d��1�a�8�阿� ݲ��W2����<D��p���K��ITD�Qm"�A�o��J��;�\$�9�$�Jй�#���|�O��x�S׳|0i�Pdz�/�˃�29�����(�d��P�f-��Z���
    p��!�΁�ߍ�� q �@8���%���1U���NS����ٽ�L8���.����?>V׿y\����2PFEcɷg�d&[|1�����6S�	J��/+8BHx��:��VV����y�܅���UEH�@�c��G��C��
    4�ؾ����P�`�}���*~�ݡ�X��0��X��p���-S�tP�xH�d���&&܅���U����y�EED�m���C��G
    4������ؾ�P�,.�IvM	L
    ��!'_�TM�spt�
    �W�p��mCS�Kj�
    �"p؞�q�����mY� ��l��P�4�/�z}B���'�X�]PI4�Y�(<��5�#�c�ŃU0a5��!�}����x�ą�!���_�YI��;���*2a��i��2=s�F�W���J;5GZK]~ϐ�"i�?q$CO	抍��2l�N��������p��z���G��Kt�?8�ml��k�����?ѷQ��1[�,p6e=��XAcU���82�������
    �p�����S��+�J������#O�W.j$�{qЕ�յ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s��&^����TH�U.1%�]&^����TH�U.1%�]�
    �#=��BŬ�R���W9����RS#��`X��>r��ˑ}b���G�N*�cj���p�X;�����a�i���A
    辧$�r�����������Mk��z��A�ӭ��,�8�=���Y�r��_�OL��LQ�d�
    \R7Mj�M=}�^Ɣ�M@���y��L�T᪔Jؓ����_a�w{/�k-SӒu1����ԋ��Lo�%'����V��%q�)$6��_ф#�䧌�43��)�ܝ�!��!ē���]��>�q�G0���8�:�/�3�F�.������T������)@�a״r��M76�l��_�+����4�qL
    ������ �T�����[�3��#��yP��c	Di�bz%��tH�4��[�v�-��n;��I]V/ʸ|a���h������hԝv_π;82:�P���U��6�?��QRV@u�
    6�Q6��a��?����p�XKtg,0�#��NDY�e�H�
    k�0��/�M�����PL�;����Δ�x�p��I�_P��k�nQ����X��Z6�^`���\��u����/ӄAkE֙e~
    �U��+�y^>8�	Hx�����VV����y�܅���UEH�@�c��G��C��
    4�ؾ����P��)iyRR8���W���{��w����d5{7���xX�Ɇ�66܅���U����y�E(EU�q���C��G
    4������ؾ�P}x�YXH�6X��&&܅���U����y�EE��m��C��G
    4������ؾ�P�,,�|��je�cX-2�9��po��E�9����CMlpK$��²l�6XSx�f�i�
    ����%/;��#�=M�Ցs�dsk3�G�}[D��U1t����
    �ak�y��?��seJ�]\��a�������a�+g�(0�8a9�@�i�h?贁u4y��K��#lܱRm�#��!�ƃ��
    �a�0j{��!u��
    FE0aH�H��y�`�u���ln�B$��mg���V�P�iE�ol���^U�[�[����Z�	��GZxZ)Ҙ��E�a�w͢�rҹ����Ym���<Dg���0��,T�p�j�xy\�[\��5�ߊ����L���IK��t�+�����@L��5Q,��Ϋ�s�.��t���&���.x�&���IY���0\B%Htͨ��r�1��6�����XW�+*�J/,��|"��I*䰕h�4�>;�*�L��|�r��P�"$�Z�si6�N��_v>Ra�����b���$Bv���9�䛡�[�
    q{�OНF�ouy���B&�W2@Y�&����_�
    �)E��>����ŢSW���A��cxh��Iq#tg�>����׳:�٣���R�����z釦���ц�����{K��6�v��d/���%��.�������3AzM��h���9��OxKҪ���aRP+��E@�o������$P&'�71
    J)c:+�(�mo��V��մI"t�b��ɡ���q�������ޝV<���c>E���]�ӭ�zQқq�
    �0����+�Ƒio�R.�):�pl��N��꟰�E����IO�
    ?��;O�fHz�N����à/7C©ϱt1_�f��u�;���[�����XMB��O��T>I�tƁkدؚ�‡�"Va=0=?�Ɓo�S�=S:s�j�0�Xa��i|��[0��
    ,�֥����G����+�sv��_~��[�M	���_��c��(Hx��a��VV����y�܅���UEH�@�c��G��C��
    4�ؾ­��P�}�K Ż֨$�B�?��9�����*�1�A�hxH��ۇ�&&܅���U����y�EF��li��C��G
    4������ؾ�P�,4:.:�l������u�	$j뤞/9��0A;G!UxU@���E�"�:�JS�!��Z/���L	p�1>��qhygRu���"��n�>`�)⑑P�v{��/_3H��N���;3Ҕ���o��q�MOg���7�KnRDZ��Fx���T���,�6�7���If)H��͜{��tP�*8�'[)��#(��ݗ�9'���|yz|�NО�M�e7�*��B�S�4#'���Ǫ���ᆤ��xI�@?�h�����p�8H���y�\g��D�i��DN�H���^��.Z	7߸�iL�$�֒���pX]ː�l@k�U��p���]o��5�Jr$��_ś_��^<ol"sE{�2�f��β��_c�����S��vDW$j��������-��Q�l��$���Vk�J�)ꓼ\z!��]�F����@���+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0����P�� =G��~0���G��mP�|#A���p|��6Hx��㇇VV����y�܅���UEH�@�c��G��C��
    4�ؾ���P����,t��>K�l&�x�x��9}VQh�x�9�a�xX�t쇇66܅���U����y�E(F��p	��C��G
    4������ؿP}x�9XH��`��&&܅���U����y�EG��kD��C��G
    4������ؿP�,P*
    ���B��B5zV��1�] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#U�H������Ð��L3�B��N:Ыx���z��@�3�4f@:s
    ��:�����C�a��E�����ux��l�@)
    �gz�M'���[�������Dkc����+L��e����N���%"���
    ̮i�+��<�&�lj��o�i/����l�3M�	l!��;hl��*]�}�B���bܹ
    9��.Q�4
    �8��[|� �<��O�#K�����􂥮:Q1�
    �){6��#�(��\��L�Z���+��L�\��p��N�`�0�y��!N8��TSU��PC���bh .H���`�/�JE���7��e$ȇ�˼a�P(���x��|`!�E��8N\�+����X�	 )n}�
    h*H���!
    �Z�
    ����p����ݯA�siPס(���n
    ���y�ɧ!�iZ%4�IW}��>N~g�u&�Z�#+��A��<]�[�u/�_Ķ��5�
    eټ�H�#�&%IW���m׿����/�y(��Y<�J�&DZ4�4.��J��o�>�E��Ʀ��F��O�C��e�P�e�����f�t�E�`�
    �)w�_!/?K��;M;�G���[��#3a�wW0O9�[F�6g��yf���v�iU�,nMOaә�s	�.U/�+�e8�e�80��w`�G��V�'SZ�>���(u�Ƥ��r�;U|r2
    spWB 	u8�[>S��QVSfMբ�i��\����Ob��D�����I܌�Z���O�ټz� �|��ʊ݁�R��J{�e�6�~(�AÅ\&����ɢm�ֈ���\�c�RVK���vHx�ei��VV����y�܅���UEH�@�c��G��C��
    4�ؿ���P�W��q�hJd��'6�hr���{�<L���%�-�xH��#��&&܅���U����y�EHn�j���C��G
    4������ؿ"P�,��&�T4|
    ��>�
    ���',�P𞕳.�G�?�b}]��}'m�����n�y�n>U��(��nq���ba~����s(���̮�����h�4�@�""��L.)��a�|��;X@m�ǰ��|�`���,$����$+��EN`)��4!*�"����W�+	����sv���
    �8�g�zO\P�����=�Cݦ>29�]ˢ^�mK�yb@�H+{%�Tr����>�
    ����ʵ۬���]�@HnG��$�,9���~�� �爅꫺�mș۽!����K%���[����y��G���N/�4�I�R�.����!�ڵ�t����k�#̰��
    i���[K�Z���z	%B�Y�8�3�w9�t4��[6f��5G�b�#�Q���:���L��)Ta#�U���|�"Ҕuy/���"�
    �>�j)w	E\1zœCs�l�.v�&�9��Lmv#D�pE�0�+�w4+�{n�v욄��u[�񃋕����U�2���xa��-M_M��lKP��\T�����X��tSEC�og��-���0�t�6�P��w1a�K�P���R�H�>�l����w�d�m�;�����n��I�7�c�o��T���)�
    �d��yg�l#����ok��������4�}^C�q�]5�_���������z�'6���r���fz�wN���N鿣o���~8l�w5��5o�lS^D��F&:$Z]Kĺ{&�^ݝ�;�c$v�x�^�i��wZ���%��#B}5Ҕڈ�,�~E���;�(�i�,�y�zm[[ɡ,��3M��D� �"�����``v��4����eȢ�B��pzl$)8l�gNo�xܹ�3�X�l�q�a���B]U͇`���t���M$h�"�K�g�O��è^�t�(�D�>�v)\�hL
    ������:1����HF�(�FaE�Y���7-
    -Y���2��	-s�{)@��ڨ~��(�
    5hY(��]�ܧHx�&+��VV����y�܅���UEH�@�c��G��C��
    4�ؿ"���P����?�4n����"�DʧM>�DH˳� �W��xX�3��66܅���U����y�E(H��np��C��G
    4������ؿBP}x�XH�����&&܅���U����y�EIa�i���C��G
    4������ؿBP�,�D��	���x��>��c�W�r1����;H�'-+��2�3�d�O_X~��lJW�=`WN��D�qglm�O�Y�<�c�2�1���]��?�s�w�����M����v'�!��ti�v�o�n|Q�?���K��Kqc���(l5���m���J~���NM��V�cDv�-|?y!X�]�-E��d.�Gƫ���P&ټDs�#?��:�{T��d��R�/vJ��}��АY��5��
    �m
    G
    r��?��{SW�נ���3�Lf
    ���C�b38���DڈZ;��3��)[�-G�������K��s#'C�.�|jζ��&�~[���qGz�v�4�44�v�k��?�:�H�{L��#�Q4��eis��>Q��6f<�:t+1+��J`xW)�A�:$W��$2���[M4����fZ��/�
    ��uͨ"Vu�Iǩz��
    �f��#�mf��o�cw����Iy�9��Ron�ljG�s]o�;�g%�>,���+�:Xå�+e�B/�������b_Y��C@�K�}�Q��F�,(�D��(��~t�S���{�޴���q얼���/z�Ӊm1�m������*nC��0q�
    >�����#WE/�쿗2>����/��5"Q��;Q�@#��IY�x`�n�.�>��$/F��%�f��J��}
    w<�c�1��I�V�䁤*)q!�F&�8���>��s�F�h�כ9�@[��8��c�Hm���z�������
    �+����X��+�in�&���iII6�ˆڈd�Р%|�ч_z��m�}���ݢ�|�����mFW��Z�0tK�Y�u�CF�Wµ��Ռhʙ�Λ����D�h`YBE�G��w��z��@w�,w��k�w�2�'r�Y���L�3��O�y����{�h�W���{��A��7�6In��l2IG>@��e���β�m��V�q{�i�c_^����c�^��@�dž8<�� Or�Hx�`���VV����y�܅���UEH�@�c��G��C��
    4�ؿB���P��VTb���sY��3��1/��m�'�n�i���W:�xH�)��&&܅���U����y�EIu�i���C��G
    4������ؿbP�,���7��f��IX���
    AU�}������@��#1��n&�N��8g���
    G����#����G�J�hO������0}���%�,"�MW�×t�3�[�p��ejh�on"2��י��[��m �
    �	���{k2/.����߭Yż�a+i�Nwg^s�乶9`k1�aM�����]��
    ��jp
    NBr��~�dПУ��Ԑ�҆R��/Y
    �Q-QڽЭ\���]�j �T+�k����rx�y�,7��]X�n5^sH�ׂ�Dc#i�3�A���P��:��7m�$J8@jNNlY�u�i(����j&�L���-P��93fI4�}V���ή���P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��AɆ��P�w���MY��A�������c���?ɁI���I�k�8��]��UBHX�X���66����y�܅���UE(�@�c4��G��C��
    4�ؿb���P��$�Xh��㋇FF����y�܅���UE8�@�c#��G��C��
    4�ؿb���P��ET�j
    �+*[!Aa�l�hX��
    ��66܅���U����y�E(J��lD��C��G
    4������ؿrP}x�	Xh�L��FF܅���U����y�E8KY�k���C��G
    4������ؿrP�,-�T�`9df͠mˏ.�t�dhh�� ��FF����y�܅���UE8�@�c"��G��C��
    4�ؿr���P���^]Ee�	��ɥj��Z�hh��F��FF܅���U����y�E8Ke�k���C��G
    4������ؿ�P�,�z}W�{Є�`$F���hx��M��VV����y�܅���UEH�@�c��G��C��
    4�ؿ����P��Qo�8H�ϳ��H0���$�������
    iI]xX�V��66܅���U����y�E(LR�j���C��G
    4������ؿ�P}x��X���|��ff܅���U����y�EXM�i���C��G
    4������ؿ�P�,���y�x�Sj<�+� &^����TH�U.1%�]���uBc\S�R�Yĭ�x����VV����y�܅���UEH�@�c��G��C��
    4�ؿ����P��WN�(6m��m	�����e�M�x��Y�e9�ҨYxd�����BB����y�܅���UE4�@�c#��G��C��
    4{_�=� �k�d`����>>܅���U����y�E0ME�i���C��G
    4��-��{_�>p�,�8�`X����66����y�܅���UE(�@�c.��G��C��
    4{_�>-��P��6Xh�����FF����y�܅���UE8�@�c��G��C��
    4{_�>-��P��=��I���-B,18cԹ��hH�����&&܅���U����y�EM��e'��C��G
    4������ؿ�P�,�3�ﳲn��դY��I�]�r�<�~=ȻiUn2���3���R�<��ːL��z%�����;�}YK��'N��G��/��L?�߼�&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]+�S�m(��z����[�7�^����,"��Hx����VV����y�܅���UEH�@�c��G��C��
    4�ؿ­��P���f�ɛ)Hh�Xf��Z�Um���v�C��z(�A�VDxX��
    ��66܅���U����y�E(N��h#��C��G
    4������ؿ�P}x�YX�������܅���U����y�E�O�gu��C��G
    4��-��{_�NP�,�o�D��Bo
    �z�����V n�?�,�X�>`��M�ءHO��\��+���{���٢���[��Ǵ�R��X����	��&v�ˈTG��O�J�t�I�F�ξl��=�
    �f��M�e��O���N��h��,��FF����y�܅���UE8�@�c��G��C��
    4{_�N-�iP�p���� �v��l�B,�@�hX�5��66܅���U����y�E(OT�g���C��G
    4��-�i{_�^P}x�Xh�LA��FF܅���U����y�E8O��f���C��G
    4��-�i{_�^P�,������{�d�x�6���hh�,C��FF����y�܅���UE8�@�c��G��C��
    4{_�^-�yP�`�/���u�/]$_��h8�����܅���U����y�EP�b���C��G
    4������ؿ�P�,� U'��%�6o�x��&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]&^����TH�U.1%�]D�?���e܅n2��8X��ڎ�66����y�܅���UE(�@�c)��G��C��
    4�ؿ�ɠP��XX��֏�66܅���U����y�E(Q�e���C��G
    4��-�y{_�nP�,�:XX�,��66����y�܅���UE(�@�c(��G��C��
    4�ؿ�ɠP��Xd���BB����y�܅���UE4�@�c��G��C��
    4~���� m|�dX�����66܅���U����y�E(Q��e ��C��G
    4���ɠ�ؿ�P}x�xX`�q���>>܅���U����y�E0R��d(��C��G
    4��߿h4~���p�,�[�`X�����66����y�܅���UE(�@�c&��G��C��
    4~���߿h5P��YXX��Ñ�66܅���U����y�E(S~�cw��C��G
    4���ɠ�ؿ�P�,��Xh��Ñ�FF܅���U����y�E8S��cC��C��G
    4��-�y{_�nP�,��4(��K�p�wB9;�FhX�lđ�66����y�܅���UE(�@�c%��G��C��
    4�ؿ�ɡP���Xx��Ǒ�VV����y�܅���UEH�@�c��G��C��
    4{_�n-��P�PK����w�S�.}�6L&�V�f��t��2�	ҐxX�Gґ�66܅���U����y�E(S��c��C��G
    4��-��{_��P}x��XH�jU��&&܅���U����y�ET�^���C��G
    4��-��{_��P�,a��N_�r�2��;`tv���x5L�"�~<�ȖQ�<u�1D�,�N���a��亰��qpC�[���-�Qȗ���T&)$��$�����a�J��b���.��$���VIQR�tфʎ�i&^����TH�U.1%�]N�$��;_^�ŸU���C��
    ��4��nz+e���>�z�@�F���h�{�f�gԆ��ok�( ��t��X�B�V���@���,�ٳM�(�e�k��|	SΊYT���.+QѰ�x�
    >z鰍�†g`]�G�e�d��3W�»"�:F,ɵ�I�r�'].�
    ă�<�X����ۺ�71y��u���>ӣ�y��C�7�I`C�?��&#�K057�Q�Mp�5����gZ������T�A,��JǴ�t����I��@��Le���am��p+��>e�ݞ�����g��O"��{2�S�P���u|�1'�7?������*�@U��&E)�O��#!�?r&SL!�P�,�qw��g�����9�.�_2��%Ѡ����7�a0�zF�n&2:���R{�ߞu"+�H�f���'��
    c��e�o/�($n`�ìe��*N�Y�]�A��ņ���Yغ��G;
    a��F-0X^�����7�*���"g.��Sa��X���]���U�u���fZ_$��4LF�_��ϵ�:��^��;A���g�E�Ͼ]��wN7�S{oE�q(:�
    y�+F)J,���Df���ږ�[l�X����.d��1�a�8�阿� ݲ��W2����<D��p���K��ITD�Qm"�A�o��J��;�\$�9�$�Jй�#���|�O��x�S׳|0i�Pdz�/�˃�29�����(�d��P�f-��Z���
    p��!�΁�ߍ�� q �@8���%���1U���NS����ٽ�L8���.����?>V׿y\����2PFEcɷg�d&[|1�����6S�	J��/+8BHx��]��VV����y�܅���UEH�@�c��G��C��
    4{_��-�yP�`#����*~�ݡ�X��0��X��p���-S�tP�xH�b풇&&܅���U����y�EUi�]���C��G
    4��-�y{_��P�,j*IvM	L
    ��!'_�TM�spt�
    �W�p��mCS�Kj�
    �"p؞�q�����mY� ��l��P�4�/�z}B���'�X�]PI4�Y�(<��5�#�c�ŃU0a5��!�}����x�ą�!���_�YI��;���*2a��i��2=s�F�W���J;5GZK]~ϐ�"i�?q$CO	抍��2l�N��������p��z���G��Kt�?8�ml��k�����?ѷQ��1[�,p6e=��XAcU���82�������
    �p�����S��+�J������#O�W.j$�{qЕ�յ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s��&^����TH�U.1%�]&^����TH�U.1%�]�
    �#=��BŬ�R���W9����RS#��`X��>r��ˑ}b���G�N*�cj���p�X;�����a�i���A
    辧$�r�����������Mk��z��A�ӭ��,�8�=���Y�r��_�OL��LQ�d�
    \R7Mj�M=}�^Ɣ�M@���y��L�T᪔Jؓ����_a�w{/�k-SӒu1����ԋ��Lo�%'����V��%q�)$6��_ф#�䧌�43��)�ܝ�!��!ē���]��>�q�G0���8�:�/�3�F�.������T������)@�a״r��M76�l��_�+����4�qL
    ������ �T�����[�3��#��yP��c	Di�bz%��tH�4��[�v�-��n;��I]V/ʸ|a���h������hԝv_π;82:�P���U��6�?��QRV@u�
    6�Q6��a��?����p�XKtg,0�#��NDY�e�H�
    k�0��/�M�����PL�;����Δ�x�p��I�_P��k�nQ����X��Z6�^`���\��u����/ӄAkE֙e~
    �U��+�y^>8�	Hx�����VV����y�܅���UEH�@�c��G��C��
    4{_��-�iP���niyRR8���W���{��w����d5{7���xX���66܅���U����y�E(VK�`���C��G
    4��-�i{_��P}x��XH��}��&&܅���U����y�EW�\��C��G
    4��-�i{_��P�,Zq�|��je�cX-2�9��po��E�9����CMlpK$��²l�6XSx�f�i�
    ����%/;��#�=M�Ցs�dsk3�G�}[D��U1t����
    �ak�y��?��seJ�]\��a�������a�+g�(0�8a9�@�i�h?贁u4y��K��#lܱRm�#��!�ƃ��
    �a�0j{��!u��
    FE0aH�H��y�`�u���ln�B$��mg���V�P�iE�ol���^U�[�[����Z�	��GZxZ)Ҙ��E�a�w͢�rҹ����Ym���<Dg���0��,T�p�j�xy\�[\��5�ߊ����L���IK��t�+�����@L��5Q,��Ϋ�s�.��t���&���.x�&���IY���0\B%Htͨ��r�1��6�����XW�+*�J/,��|"��I*䰕h�4�>;�*�L��|�r��P�"$�Z�si6�N��_v>Ra�����b���$Bv���9�䛡�[�
    q{�OНF�ouy���B&�W2@Y�&����_�
    �)E��>����ŢSW���A��cxh��Iq#tg�>����׳:�٣���R�����z釦���ц�����{K��6�v��d/���%��.�������3AzM��h���9��OxKҪ���aRP+��E@�o������$P&'�71
    J)c:+�(�mo��V��մI"t�b��ɡ���q�������ޝV<���c>E���]�ӭ�zQқq�
    �0����+�Ƒio�R.�):�pl��N��꟰�E����IO�
    ?��;O�fHz�N����à/7C©ϱt1_�f��u�;���[�����XMB��O��T>I�tƁkدؚ�‡�"Va=0=?�Ɓo�S�=S:s�j�0�Xa��i|��[0��
    ,�֥����G����+�sv��_~��[�M	���_��c��(Hx� ���VV����y�܅���UEH�@�c��G��C��
    4{_��-�YP���K Ż֨$�B�?��9�����*�1�A�hxH�����&&܅���U����y�EW��[9��C��G
    4��-�Y{_��P�,o.:�l������u�	$j뤞/9��0A;G!UxU@���E�"�:�JS�!��Z/���L	p�1>��qhygRu���"��n�>`�)⑑P�v{��/_3H��N���;3Ҕ���o��q�MOg���7�KnRDZ��Fx���T���,�6�7���If)H��͜{��tP�*8�'[)��#(��ݗ�9'���|yz|�NО�M�e7�*��B�S�4#'���Ǫ���ᆤ��xI�@?�h�����p�8H���y�\g��D�i��DN�H���^��.Z	7߸�iL�$�֒���pX]ː�l@k�U��p���]o��5�Jr$��_ś_��^<ol"sE{�2�f��β��_c�����S��vDW$j��������-��Q�l��$���Vk�J�)ꓼ\z!��]�F����@���+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0����P�� =G��~0���G��mP�|#A���p|��6Hx�L��VV����y�܅���UEH�@�c��G��C��
    4{_��-�IP��56,t��>K�l&�x�x��9}VQh�x�9�a�xX����66܅���U����y�E(W��^���C��G
    4��-�I{_�P}x�~X8�'���܅���U����y�EX��Z"��C��G
    4��-�I{_�P�,��Q�z皨��$����~T] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#�H��QG'�C�q�i@��±�rc+9������M�[B���WO#u��rP��y�!|�,&~���3��E���Io��	���hZ��Ͽ�e=��J��}��Ƚ���k�փ���se�x�|`,:s��%�H�����%��F���ŝ1��gϵ��]$�y�F���\VG��[墅�De#��q�.Ei��o�U�d���l��{Y7��Ϙ���n���f�!-w�r�?m�KD
    y�b��`�(js����0׬^^4s�3�E��YK�̇q���W���	ٹa�М���O�����ݥ�!��(����|�qò��>�����PwˆeN_gx��
    ���
    �!���u�NE��ٽʏ+�['�:����Tv��n9�[w�=�d-�]U�R7�u�t׀��&\�x�$z����p���x�ĕſ����(���,B
    �����=�r�B��F��T�@G$IXWm�c�R��q��':~n�u^�>��{�R���Z��l���ϝ_�\�~��z����Lc�+��RaZa12���~�wd�h
    �.�0vD���tkNe+V�{��M䄎�f��@�E ���@�\�$�����	;��v���cb�m]C��:`��]/+�
    �MP�f_��렠�*$P1,nx���@���"���e��6��7V���c�1�@��m�;�Y��ò�
    +�U�͚�G��$�T��6�hQ`��J�K�3�Q�8�0���"�2j)�h�1�0�Co�����hk3�⸜�R6^�`8X�#Q��66����y�܅���UE(�@�c��G��C��
    4{_�-�)P�pXX�^)��66����y�܅���UE(�@�c��G��C��
    4{_�-�)P�pXd��*��BB����y�܅���UE4�@�c��G��C��
    4���� R��dX�2��66܅���U����y�E(YG�]���C��G
    4��-�){_�P}x�X`��5��>>܅���U����y�E0Y��]��C��G
    4����p@���p�,���`X�'6��66����y�܅���UE(�@�c��G��C��
    4�����pAP��J�XX�P��66܅���U����y�E(Z[�\���C��G
    4��-�){_�P�,��XX�xP��66����y�܅���UE(�@�c��G��C��
    4{_�-�*P�pXh�C���FF����y�܅���UE8�@�c
    ��G��C��
    4~���߿h5P��H�I���-B,18cԹ��h��=�����܅���U����y�E�\��Y���C��G
    4��߿h5~���P�,_���<�-pՇI���`
    9*,	JVaF#�5�B�#UmD0"��c��V�a|_���3�o�\c0����3M)z��9������)�g�ai��T:��pX%�<v�얿Q�4�A�j��
    zhRĔ���X�Io��66����y�܅���UE(�@�c��G��C��
    4~���߿h�P�p�IXX�-;‡66����y�܅���UE(�@�c��G��C��
    4~���߿h�P�p�HXd��<‡BB����y�܅���UE4�@�c��G��C��
    4
    b%L� �W�dX�{�Ç66܅���U����y�E(]��Y[��C��G
    4��߿h�~���P}xAX`�S�Ç>>܅���U����y�E0^`�X���C��G
    4�����q
    b%Mp�,���`X���Ç66����y�܅���UE(�@�c��G��C��
    4
    b%M���rP��:�XX���Ç66܅���U����y�E(_Q�W���C��G
    4��߿h�~���P�,�XX��Ç66����y�܅���UE(�@�c��G��C��
    4~���߿h�P�p�GXh�2ćFF����y�܅���UE8�@�c��G��C��
    4�����pAP��G�I���-B,18cԹ��h��F8ć��܅���U����y�E�_��V���C��G
    4����pA��P�,���D��Bo
    �z�����V n�?�,�X�>`��M�ءHO��\��+���{���٢���[��Ǵ�R��X����	��&v�ˈTG��O�J�t�I�F�ξl��=�
    �f��M�e��O���N��h��<ćFF����y�܅���UE8�@�c��G��C��
    4����p�P�pWu��� �v��l�B,�@�hX��Dć66܅���U����y�E(`B�V���C��G
    4����p���P}x�rXh�^ćFF܅���U����y�E8`��V1��C��G
    4����p���P�,�'����{�d�x�6���hh��`ćFF����y�܅���UE8�@�c��G��C��
    4����p�P�`�����u�/]$_��hh�F�ćFF܅���U����y�E8`��V��C��G
    4����p���.P�,�]4(��K�p�wB9;�Fhx���ćVV����y�܅���UEH�@�b���G��C��
    4��.��p�P�Pi����w�S�.}�6L&�V�f��t��2�	ҐxX�̝ć66܅���U����y�E(a
    �U���C��G
    4����p���NP}x�"XH��Ň&&܅���U����y�Ea��Q,��C��G
    4����p���NP�,+Q�N_�r�2��;`tv���x5L�"�~<�ȖQ�<u�1D�,�N���a��亰��qpC�[���-�Qȗ���T&)$��$�����a�J��b���.��$���VIQR�tфʎ�i&^����TH�U.1%�]N�$��;_^�ŸU���C��
    ��4��nz+e���>�z�@�F���h�{�f�gԆ��ok�( ��t��X�B�V���@���,�ٳM�(�e�k��|	SΊYT���.+QѰ�x�
    >z鰍�†g`]�G�e�d��3W�»"�:F,ɵ�I�r�'].�
    ă�<�X����ۺ�71y��u���>ӣ�y��C�7�I`C�?��&#�K057�Q�Mp�5����gZ������T�A,��JǴ�t����I��@��Le���am��p+��>e�ݞ�����g��O"��{2�S�P���u|�1'�7?������*�@U��&E)�O��#!�?r&SL!�P�,�qw��g�����9�.�_2��%Ѡ����7�a0�zF�n&2:���R{�ߞu"+�H�f���'��
    c��e�o/�($n`�ìe��*N�Y�]�A��ņ���Yغ��G;
    a��F-0X^�����7�*���"g.��Sa��X���]���U�u���fZ_$��4LF�_��ϵ�:��^��;A���g�E�Ͼ]��wN7�S{oE�q(:�
    y�+F)J,���Df���ږ�[l�X����.d��1�a�8�阿� ݲ��W2����<D��p���K��ITD�Qm"�A�o��J��;�\$�9�$�Jй�#���|�O��x�S׳|0i�Pdz�/�˃�29�����(�d��P�f-��Z���
    p��!�΁�ߍ�� q �@8���%���1U���NS����ٽ�L8���.����?>V׿y\����2PFEcɷg�d&[|1�����6S�	J��/+8BHx�L#ŇVV����y�܅���UEH�@�b���G��C��
    4��N��t�P�`�&���*~�ݡ�X��0��X��p���-S�tP�xH���Ň&&܅���U����y�Eb��Pd��C��G
    4����t���nP�,3�IvM	L
    ��!'_�TM�spt�
    �W�p��mCS�Kj�
    �"p؞�q�����mY� ��l��P�4�/�z}B���'�X�]PI4�Y�(<��5�#�c�ŃU0a5��!�}����x�ą�!���_�YI��;���*2a��i��2=s�F�W���J;5GZK]~ϐ�"i�?q$CO	抍��2l�N��������p��z���G��Kt�?8�ml��k�����?ѷQ��1[�,p6e=��XAcU���82�������
    �p�����S��+�J������#O�W.j$�{qЕ�յ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s��&^����TH�U.1%�]&^����TH�U.1%�]�
    �#=��BŬ�R���W9����RS#��`X��>r��ˑ}b���G�N*�cj���p�X;�����a�i���A
    辧$�r�����������Mk��z��A�ӭ��,�8�=���Y�r��_�OL��LQ�d�
    \R7Mj�M=}�^Ɣ�M@���y��L�T᪔Jؓ����_a�w{/�k-SӒu1����ԋ��Lo�%'����V��%q�)$6��_ф#�䧌�43��)�ܝ�!��!ē���]��>�q�G0���8�:�/�3�F�.������T������)@�a״r��M76�l��_�+����4�qL
    ������ �T�����[�3��#��yP��c	Di�bz%��tH�4��[�v�-��n;��I]V/ʸ|a���h������hԝv_π;82:�P���U��6�?��QRV@u�
    6�Q6��a��?����p�XKtg,0�#��NDY�e�H�
    k�0��/�M�����PL�;����Δ�x�p��I�_P��k�nQ����X��Z6�^`���\��u����/ӄAkE֙e~
    �U��+�y^>8�	Hx�$�ŇVV����y�܅���UEH�@�b���G��C��
    4��n��x�P���iyRR8���W���{��w����d5{7���xX���Ň66܅���U����y�E(c�S���C��G
    4����x����P}x�XH�=*Ƈ&&܅���U����y�Ec�O���C��G
    4����x����P�,#��|��je�cX-2�9��po��E�9����CMlpK$��²l�6XSx�f�i�
    ����%/;��#�=M�Ցs�dsk3�G�}[D��U1t����
    �ak�y��?��seJ�]\��a�������a�+g�(0�8a9�@�i�h?贁u4y��K��#lܱRm�#��!�ƃ��
    �a�0j{��!u��
    FE0aH�H��y�`�u���ln�B$��mg���V�P�iE�ol���^U�[�[����Z�	��GZxZ)Ҙ��E�a�w͢�rҹ����Ym���<Dg���0��,T�p�j�xy\�[\��5�ߊ����L���IK��t�+�����@L��5Q,��Ϋ�s�.��t���&���.x�&���IY���0\B%Htͨ��r�1��6�����XW�+*�J/,��|"��I*䰕h�4�>;�*�L��|�r��P�"$�Z�si6�N��_v>Ra�����b���$Bv���9�䛡�[�
    q{�OНF�ouy���B&�W2@Y�&����_�
    �)E��>����ŢSW���A��cxh��Iq#tg�>����׳:�٣���R�����z釦���ц�����{K��6�v��d/���%��.�������3AzM��h���9��OxKҪ���aRP+��E@�o������$P&'�71
    J)c:+�(�mo��V��մI"t�b��ɡ���q�������ޝV<���c>E���]�ӭ�zQқq�
    �0����+�Ƒio�R.�):�pl��N��꟰�E����IO�
    ?��;O�fHz�N����à/7C©ϱt1_�f��u�;���[�����XMB��O��T>I�tƁkدؚ�‡�"Va=0=?�Ɓo�S�=S:s�j�0�Xa��i|��[0��
    ,�֥����G����+�sv��_~��[�M	���_��c��(Hx��3ƇVV����y�܅���UEH�@�b���G��C��
    4�����|�P��4K Ż֨$�B�?��9�����*�1�A�hxH��Ƈ&&܅���U����y�Ecd�O���C��G
    4����|����P�,8�.:�l������u�	$j뤞/9��0A;G!UxU@���E�"�:�JS�!��Z/���L	p�1>��qhygRu���"��n�>`�)⑑P�v{��/_3H��N���;3Ҕ���o��q�MOg���7�KnRDZ��Fx���T���,�6�7���If)H��͜{��tP�*8�'[)��#(��ݗ�9'���|yz|�NО�M�e7�*��B�S�4#'���Ǫ���ᆤ��xI�@?�h�����p�8H���y�\g��D�i��DN�H���^��.Z	7߸�iL�$�֒���pX]ː�l@k�U��p���]o��5�Jr$��_ś_��^<ol"sE{�2�f��β��_c�����S��vDW$j��������-��Q�l��$���Vk�J�)ꓼ\z!��]�F����@���+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0����P�� =G��~0���G��mP�|#A���p|��6Hx��ƇVV����y�܅���UEH�@�b���G��C��
    4����瀡P����,t��>K�l&�x�x��9}VQh�x�9�a�xX�;�Ƈ66܅���U����y�E(d�R���C��G
    4���瀡���P}x��X8�oMLJ܅���U����y�Ed1�N���C��G
    4���瀡���P�,ǎ5�J9���zW'��ү�W�׻f��8���] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�������+h�⠖��d��#] Agyr뾓zU s�ȵ/��b�&��0�����q�b�N޵k�1��.����YQ���u.J~�Ԫb�),j�L��,���9j��z��q���)�%����ԉ;���m?������Ho~C� �G�X��/��Pe��fn�]�y~��_j�͝Al`�
    ?E#j����b�Wl�?Z�������j���}}*t������,��>yE����yky1��R�q���(�m�����"��b5d3G�Ame���	�3m#�
    �m��@�0��`�bHv&K����hVk����[�bR�Q_`��\��aK�f�?�!�݈��6'YxIf#�"M#"��ɞ�3B�Ny��'�3�r�t4�'M:�^�ݾ=�zے�=�cr�+l�5���Ӓ̲R���/�25G��\�!�������_R�w�"�҃��~�ְ��񌟤��8\�<����d�m��M��O.��2��	����Փ��~�7�Gtp!
    	��p������8E�#�N�u�e4�|H��Z�]�5����հ/(�9�;Г+2�D�,��6������(9;ʵ�3�/4r���� �!���q�yK�*���v��[B� �6a�g�m� �B&�;�A9Ci�MS� �`w�KU�y�3�\z@s�����-Rю$<B���=f��|����v���g�m�%�O�{g�M��C��f�=�2�X�B�Lj��-a?����� G�WQ�Ô	avY�WU�i�*��(9��g,��ЪO�7��H��ѯ�ԥkT=�8�T�*>p7�D6C��?�����Xr���8X��/ȇ66����y�܅���UE(�@�c��G��C��
    4����焁P�9jXX���ȇ66����y�܅���UE(�@�c��G��C��
    4����焁P�9iXd�/�ȇBB����y�܅���UE4�@�b���G��C��
    4���� 5z�dX���ȇ66܅���U����y�E(d��R?��C��G
    4���焁���P}x�X`�L�ȇ>>܅���U����y�E0e�Q���C��G
    4��̊.���p�,��`X���ȇ66����y�܅���UE(�@�c	��G��C��
    4���̊.P��XX��ɇ66܅���U����y�E(e��Q��C��G
    4���焁���P�,�LXX��ɇ66����y�܅���UE(�@�c��G��C��
    4����焂P�9hXh���FF����y�܅���UE8�@�b���G��C��
    4
    b%M���rP�����I���-B,18cԹ��h��;���܅���U����y�E�g��N���C��G
    4�����r
    b%]P�,ۼ��<�-pՇI���`
    �V n�?�,�X�>`��#UmD0"��c��V�a|_���3�o�\c0����3M)z��9������)�g�ai��T:��pX%�<v�얿Q�4�A�j��
    zhRĔ���X�{O�66����y�܅���UE(�@�c��G��C��
    4
    b%]����P�p:�XX��>�66����y�܅���UE(�@�c��G��C��
    4
    b%]����P�p:�Xd�@�BB����y�܅���UE4�@�b���G��C��
    4(��w� ��dX�P���66܅���U����y�E(g��O��C��G
    4������
    b%^P}x��X`�L���>>܅���U����y�E0h��Ni��C��G
    4��_�;�(��xp�,-Y�`X�����66����y�܅���UE(�@�c��G��C��
    4(��x_�;�P���VXX�����66܅���U����y�E(h��NU��C��G
    4������
    b%^P�,�*XX�����66����y�܅���UE(�@�c��G��C��
    4
    b%^����P�p:�Xh�����FF����y�܅���UE8�@�b���G��C��
    4���̊.P��]i�I���-B,18cԹ��h��"�����܅���U����y�E�i��L���C��G
    4��̊.���P�,
    ��p��ǻ����w�
    ����<�����9,5
    �v#Z���Q�և�f��Kp&:��1����|B�-ܙ�sE�om[�;˙K	��3|��o2����>�ΖX���QI~���uL��|�i��HyNm9�X�-���66����y�܅���UE(�@�c��G��C��
    4���̊.�P�p��XX�0~��66����y�܅���UE(�@�b���G��C��
    4���̊.�P�p��Xd�4���BB����y�܅���UE4�@�b���G��C��
    4
    q7� �Z�dX�����66܅���U����y�E(j1�L���C��G
    4��̊.����P}x�X`�y���>>܅���U����y�E0k�K���C��G
    4����r0
    q8p�,��`X�����66����y�܅���UE(�@�b���G��C��
    4
    q8��r1P���XX����66܅���U����y�E(k��KQ��C��G
    4��̊.����P�,�XX�F���66����y�܅���UE(�@�b���G��C��
    4���̊.�P�p��Xh���#�FF����y�܅���UE8�@�b���G��C��
    4(��x_�;�P���I���-B,18cԹ��h��4�$���܅���U����y�E�l��I���C��G
    4��_�;�(���P�,!��D��Bo
    �z�����V n�?�,�X�>`��M�ءHO��\��+���{���٢���[��Ǵ�R��X����	��&v�ˈTG��O�J�t�I�F�ξl��=�
    �f��M�e��O���N��X���$�66����y�܅���UE(�@�b���G��C��
    4(���_�<+P�p�EXX���$�66܅���U����y�E(m�I���C��G
    4��_�<+(���P}x\>XX�I#%�66܅���U����y�E(m��Iq��C��G
    4��_�<+(���P�,V�XX��#%�66����y�܅���UE(�@�b���G��C��
    4(���_�<,P�p�DXh�&U&�FF����y�܅���UE8�@�b���G��C��
    4
    q8��r1P��{��I���-B,18cԹ��h����'���܅���U����y�E�nb�H��C��G
    4����r1
    qHP�,6�D��Bo
    �z�����V n�?�,�X�>`��M�ءHO��\��+���{���٢���[��Ǵ�R��X����	��&v�ˈTG��O�J�t�I�F�ξl��=�
    �f��M�e��O���N��X���'�66����y�܅���UE(�@�b���G��C��
    4
    qH��r�P�p��XX�6)�66܅���U����y�E(oW�G���C��G
    4����r�
    qIP}x;�XX�M)�66܅���U����y�E(o��GS��C��G
    4����r�
    qIP�,6/XX��M)�66����y�܅���UE(�@�b���G��C��
    4
    qI��r�P�p��Xl��8��Counters provided by dumpcap��@���8���l

  • I don't see anything in the TCP level that should trigger the client to terminate the connection. Everything seems ok and suddenly the client sends the FIN packet.

    Is there any logic in the application level that can explain this? (e.g. some wrong/unexpected received data that will cause the client to close the connection?) 

  • The developer of the client program found out the reason for the reconnections - incorrect data coming from the server.
    I found what is wrong with the data: the data coming from the target device contains crc16 and the client program sees the violation of this packet and reconnects.
    I sniff the packet from the target device by physically connecting to the line with a UART-USB adapter and comparing it to the packet received by the CC3220SF and outputted via the Debug UART CC3220SF LaunchPad.
    A packet violation occurs when receiving data on the UART CC3220SF - the received data is less than that sent by the target device.
    An example of such a violation is shown below:

    Target device UART Tx, 114 bytes
    55 97 01 00 00 E2 07 01 00 01 02 03 27 9C DA A3
    74 20 4A B5 CC 6E 94 5B 9D F7 04 0B 77 01 00 01
    27 00 00 00 00 00 00 00 00 03 06 1E 15 05 04 1B
    00 01 06 1C 15 0A 25 01 00 00 03 06 1E 15 04 20
    16 00 00 03 06 1E 15 04 20 30 00 00 03 06 1E 15
    05 02 07 00 00 03 06 1E 15 05 04 1C 00 00 CE 04
    80 FE 00 00 00 00 00 00 00 00 EC FF FF FF EC 00
    6B F5

    CC3220SF UART Rx, 111 bytes
    55 97 01 00 00 E2 07 01 00 01 02 03 27 9C DA A3
    74 20 4A B5 CC 6E 94 5B 9D F7 04 0B 77 01 00 01
    27 00 00 00 00 00 00 00 00 03 06 1E 15 05 04 1B
    00 01 06 1C 15 0A 25 01 00 00 03 06 1E 15 04 20
    16 00 1E 15 04 20 30 00 00 03 06 1E 15 05 02 07
    00 00 03 06 1E 15 05 04 1C 00 00 CE 04 80 FE 00
    00 00 00 00 00 00 00 EC FF FF FF EC 00 6B F5

    Client-program receive, 111 bytes
    55 97 01 00 00 E2 07 01 00 01 02 03 27 9C DA A3
    74 20 4A B5 CC 6E 94 5B 9D F7 04 0B 77 01 00 01
    27 00 00 00 00 00 00 00 00 03 06 1E 15 05 04 1B
    00 01 06 1C 15 0A 25 01 00 00 03 06 1E 15 04 20
    16 00 1E 15 04 20 30 00 00 03 06 1E 15 05 02 07
    00 00 03 06 1E 15 05 04 1C 00 00 CE 04 80 FE 00
    00 00 00 00 00 00 00 EC FF FF FF EC 00 6B F5


    A similar violation of a packet received over the UART begins to occur immediately after the second client program connects over TCP, even if it does not exchange data.
    It looks like the applications running on the TI RTOS are colliding with each other, causing the UART to malfunction.
    Here is the code that relates to the UART and Task initialization and UART transmit / receive functions:

    #define UART_READ_TASK_STACK_SIZE  2000
    #define UART_READ_TASK_PRIORITY    1
    
    UART_Handle UARThandle;
    
    Task_Struct uartReadTask;  // not static so you can see in ROV
    static uint8_t uartReadTaskStack[UART_READ_TASK_STACK_SIZE];
    
    UART_Handle InitUART(void)
    {
        UART_Params uartParams;
        UART_Handle uartHandle;
    
        UART_init();
        UART_Params_init(&uartParams);
    
        uartParams.writeMode      = UART_MODE_BLOCKING;
        uartParams.readMode       = UART_MODE_BLOCKING;
        uartParams.writeDataMode  = UART_DATA_BINARY;
        uartParams.readDataMode   = UART_DATA_BINARY;
        uartParams.readReturnMode = UART_RETURN_FULL;
        uartParams.readEcho       = UART_ECHO_OFF;
        uartParams.readTimeout    = 1000 / Clock_tickPeriod;
        uartParams.baudRate       = 921600;
    
        uartHandle = UART_open(CONFIG_UART_1, &uartParams);
    
        return(uartHandle);
    }
    
    void InitTaskUART(void)
    {
        Task_Params taskParams;
    
        Task_Params_init(&taskParams);
        taskParams.stack = uartReadTaskStack;
        taskParams.stackSize = UART_READ_TASK_STACK_SIZE;
        taskParams.priority = UART_READ_TASK_PRIORITY;
        Task_construct(&uartReadTask, uartReadTaskFxn, &taskParams, NULL);
    }
    
    void *appThread(void *arg0)
    {
    	...
    	UARThandle = InitUART();
    	InitTaskUART();
    	...
    	UART_write(UARThandle, Queue.Items[Queue.rptr].send_buf, min(Queue.Items[Queue.rptr].size, MAX_UART_DMA));
    	bytesRead = UART_read(UARThandle, pBuf, min(RX_BUF_SIZE - Queue.Items[Queue.rptr].size, MAX_UART_DMA));
    	...
    }

    Initialization of appThread:

    	...
    	pthread_attr_init(&pAttrs);
        priParam.sched_priority = 1;
        RetVal = pthread_attr_setschedparam(&pAttrs, &priParam);
        RetVal |= pthread_attr_setstacksize(&pAttrs, TASK_STACK_SIZE);
    
    	if(RetVal)
    		while(1);
    
        RetVal = pthread_create(&g_app_thread, &pAttrs, appThread, NULL);
    
    	if(RetVal)
    		while(1);
    	...

  • What applications are running on the cc3220sf (that you think can collide)?

    Are there different apps that access the UART? Are you using flow control on the uart? Maybe printing the data before it is sent to the uart Can help you debug your issue.