diff --git a/basice2e/run.sh b/basice2e/run.sh
index 5a98213e60ba4d2cbd4284e3f50d7f54c5bea76b..2f5d33f468b429de5b075466a7329a8d139d0fa4 100755
--- a/basice2e/run.sh
+++ b/basice2e/run.sh
@@ -112,1093 +112,1136 @@ fi
 
 
 echo "RUNNING CLIENTS..."
-
-runclients() {
-    echo "Starting clients..."
-
-    # Now send messages to each other
-    CTR=0
-    for cid in $(seq 4 7)
-    do
-        # TODO: Change the recipients to send multiple messages. We can't
-        #       run multiple clients with the same user id so we need
-        #       updates to make that work.
-        #     for nid in 1 2 3 4; do
-        for nid in 1
-        do
-            nid=$(((($cid + 1) % 4) + 4))
-            eval NICK=\${NICK${cid}}
-            # Send a regular message
-            mkdir -p blob$cid
-            CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client$cid$nid.log -s blob$cid/blob$cid --unsafe --sendid $cid --destid $nid --sendCount 20 --receiveCount 20 -m \"Hello, $nid\""
-            eval $CLIENTCMD >> $CLIENTOUT/client$cid$nid.txt 2>&1 &
-            PIDVAL=$!
-            eval CLIENTS${CTR}=$PIDVAL
-            echo "$CLIENTCMD -- $PIDVAL"
-            CTR=$(($CTR + 1))
-        done
-    done
-
-    echo "WAITING FOR $CTR CLIENTS TO EXIT..."
-    for i in $(seq 0 $(($CTR - 1)))
-    do
-        eval echo "Waiting on \${CLIENTS${i}} ..."
-        eval wait \${CLIENTS${i}}
-    done
-}
-
-###############################################################################
-# Test  Basic Client
-###############################################################################
-
-
-if [ "$NETWORKENTRYPOINT" == "localhost:8440" ]
-then
-
-    echo "RUNNING BASIC CLIENTS..."
-    runclients
-    echo "RUNNING BASIC CLIENTS (2nd time)..."
-    runclients
-
-    # Send E2E messages between a single user
-    mkdir -p blob9
-    mkdir -p blob18
-    mkdir -p blob91
-    echo "TEST E2E WITH PRECANNED USERS..."
-    CLIENTCMD="timeout 240s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    CLIENTCMD="timeout 240s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 2 --receiveCount 2 -s blob18/blob18 --slowPolling --sendid 18 --destid 18 -m \"Hi 18->18, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-
-
-    # Send E2E messages between two users
-    CLIENTCMD="timeout 240s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 3 --receiveCount 3 -s blob9/blob9 --sendid 9 --destid 18 -m \"Hi 9->18, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 &
-    PIDVAL1=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 3 --receiveCount 3 -s blob18/blob18 --sendid 18 --destid 9 -m \"Hi 18->9, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL1
-    wait $PIDVAL2
-
-
-    # Send multiple E2E encrypted messages between users that discovered each other
-    echo "SENDING MESSAGES TO PRECANNED USERS AND FORCING A REKEY..."
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18_rekey.log --sendCount 20 --receiveCount 20 --destid 9 -s blob18/blob18 -m \"Hello, 9, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client18_rekey.txt 2>&1 &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client9_rekey.log --sendCount 20 --receiveCount 20 --destid 18 -s blob9/blob9 -m \"Hello, 18, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client9_rekey.txt 2>&1 &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-
-    echo "FORCING HISTORICAL ROUNDS... (NON-E2E, PRECAN)"
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client33.log -s blob33 --sendid 1 --destid 2 --sendCount 5 --receiveCount 5 -m \"Hello from 1, without E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client33.txt &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client34.log -s blob34 --sendid 2 --destid 1 --sendCount 5 --receiveCount 5 -m \"Hello from 2, without E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client34.txt &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    wait $PIDVAL2
-
-    echo "FORCING MESSAGE PICKUP RETRY... (NON-E2E, PRECAN)"
-    # Higher timeouts for this test to allow message pickup retry to function
-    CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client20.log -s blob20 --sendid 20 --destid 21 --sendCount 5 --receiveCount 5 -m \"Hello from 20, without E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client20.txt &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client21.log -s blob21 --sendid 21 --destid 20 --sendCount 5 --receiveCount 5 -m \"Hello from 21, without E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client21.txt &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    wait $PIDVAL2
-
-
-fi
-
-###############################################################################
-# Test  Sending E2E
-###############################################################################
-
-# Non-precanned E2E user messaging
-echo "SENDING E2E MESSAGES TO NEW USERS..."
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --writeContact $CLIENTOUT/rick42-contact.bin --unsafe -m \"Hello from Rick42 to myself, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --writeContact $CLIENTOUT/ben43-contact.bin --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-
-while [ ! -s $CLIENTOUT/ben43-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-
-
-TMPID=$(cat $CLIENTOUT/client42.log | grep -a "User\:" | awk -F' ' '{print $5}')
-RICKID=${TMPID}
-echo "RICK ID: $RICKID"
-TMPID=$(cat $CLIENTOUT/client43.log | grep -a "User\:" | awk -F' ' '{print $5}')
-BENID=${TMPID}
-echo "BEN ID: $BENID"
-
-# Client 42 will now wait for client 43's E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-###############################################################################
-# Test  Renegotiation
-###############################################################################
-
-echo "TESTING RENEGOTIATION..."
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request  --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL1=$!
-# Unlike before, we don't accept the channel (it's already been accepted, it'll
-# renegotiate), so instead we message ourselves to wait for the trigger
-echo "$CLIENTCMD -- $PIDVAL1"
-# Client 42 will now wait, again, for client 43's E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/rick42-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on renegotiation\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL1
-wait $PIDVAL2
-#Send a few messages
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL
-wait $PIDVAL2
-
-echo "SWITCHING RENEGOTIATION TEST..."
-# Switch places, 42 renegotiates with 43
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --send-auth-request  --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-# Client 43 will now wait, for client 42's renegotiated E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on switching renegotiation\""
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL1
-wait $PIDVAL2
-#Send a few more messages
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL
-wait $PIDVAL2
-echo "END RENEGOTIATION"
-
-###############################################################################
-# Test  Deleting Contacts & Requests
-###############################################################################
-
-echo "DELETING CONTACT FROM CLIENT..."
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --delete-channel --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
-echo "$CLIENTCMD -- $PIDVAL"
-PIDVAL1=$!
-wait $PIDVAL1
-# NOTE the command below causes the following EXPECTED error:
-# panic: Could not confirm authentication channel for HTAmEeBhbLi6aFqcWsi3OZNDE/642GAchpATjhYFTHwD, waited 120 seconds.
-# Note that the above is example, client IDs will vary
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!"
-wait $PIDVAL2
-
-echo "DELETING REQUESTS FROM CLIENT.."
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blob44 --writeContact $CLIENTOUT/david44-contact.bin --unsafe -m \"Hello from David44 to myself, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client44.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-
-# NOTE: client45 is a precan user (see runclients), so we skip to 46 here.
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --writeContact $CLIENTOUT/matt46-contact.bin --destfile $CLIENTOUT/david44-contact.bin  --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client46.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL2
-
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --delete-sent-requests --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client46.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL2
-
-# This is tricky -- we've deleted the request without having received the
-# confirmation, so now the receiver attempts to accept the channel while the
-# sender (without confirmation) sends to them without an auth channel.
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blob44 --destfile $CLIENTOUT/matt46-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client44.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46  --destfile $CLIENTOUT/david44-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from David, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client46.txt || true &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!"
-wait $PIDVAL
-wait $PIDVAL2
-
-###############################################################################
-# Test  Simultaneous Auth
-###############################################################################
-
-echo "CREATING USERS for SIMULTANEOUSAUTH TEST..."
-JONOID=$(../bin/client init -s blob85 -l $CLIENTOUT/client85.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono85-contact.bin -v $DEBUGLEVEL)
-SYDNEYID=$(../bin/client init -s blob86 -l $CLIENTOUT/client86.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/sydney86-contact.bin -v $DEBUGLEVEL)
-echo "JONO ID: $JONOID"
-echo "SYDNEY ID: $SYDNEYID"
-
-# Attempt to send an auth request at the same time. It's not guaranteed that
-# one side won't send and the other won't receive before sending their request
-# but this method has proven to be reasonably reliable.
-echo "STARTING SIMULTANEOUSAUTH TEST..."
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blob85 --destfile $CLIENTOUT/sydney86-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client85.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blob86 --destfile $CLIENTOUT/jono85-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client86.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL1
-wait $PIDVAL2
-
-# Send a couple messages
-echo "TESTING SIMULTANEOUSAUTH MESSAGE SEND..."
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blob85 --destfile $CLIENTOUT/sydney86-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Sydney from Jono, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client85.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blob86 --destfile $CLIENTOUT/jono85-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Jono from Sydney, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client86.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL1
-wait $PIDVAL2
-
-###############################################################################
-# Test  Rekey
-###############################################################################
-
-echo "CREATING USERS for REKEY TEST..."
-JAKEID=$(../bin/client init -s blob100 -l $CLIENTOUT/client100.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Jake100-contact.bin -v $DEBUGLEVEL)
-NIAMHID=$(../bin/client init -s blob101 -l $CLIENTOUT/client101.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Niamh101-contact.bin -v $DEBUGLEVEL)
-echo "JAKE ID: $JAKEID"
-echo "NIAMH ID: $NIAMHID"
-
-
-REKEYOPTS="--e2eMaxKeys 15 --e2eMinKeys 10 --e2eNumReKeys 5 --e2eRekeyThreshold 0.75"
-# Client 101 will now send auth request
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --writeContact $CLIENTOUT/Niamh101-contact.bin --destfile $CLIENTOUT/Jake100-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client101.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-# Client 100 will now wait for client 101's E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client100.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-echo "RUNNING REKEY TEST..."
-# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^
-CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 20 -m \"Hello from Jake100, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client100.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --destid b64:$JAKEID --sendCount 20 --receiveCount 20 -m \"Hello from Niamh101, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client101.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Now we are just going to exhaust all the keys we have and see if we
-# use the unconfirmed channels
-CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 0 -m \"Hello from Jake100, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client100.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-# And receive those messages sent to us
-CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --destid b64:$JAKEID --sendCount 0 --receiveCount 20"
-eval $CLIENTCMD >> $CLIENTOUT/client101.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-###############################################################################
-# Test  Historical Rounds
-###############################################################################
-
-echo "FORCING HISTORICAL ROUNDS..."
-FH1ID=$(../bin/client init -s blob35 -l $CLIENTOUT/client35.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FH1-contact.bin -v $DEBUGLEVEL)
-FH2ID=$(../bin/client init -s blob36 -l $CLIENTOUT/client36.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FH2-contact.bin -v $DEBUGLEVEL)
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client35.log -s blob35 --destid b64:$FH2ID --sendCount 5 --receiveCount 5 -m \"Hello from 35, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client35.txt  &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client36.log -s blob36 --destid b64:$FH1ID --sendCount 5 --receiveCount 5 -m \"Hello from 36, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client36.txt  &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-echo "FORCING MESSAGE PICKUP RETRY... "
-FM1ID=$(../bin/client init -s blob22 -l $CLIENTOUT/client22.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FM1-contact.bin -v $DEBUGLEVEL)
-FM2ID=$(../bin/client init -s blob23 -l $CLIENTOUT/client23.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FM2-contact.bin -v $DEBUGLEVEL)
-# Higher timeouts for this test to allow message pickup retry to function
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client22.log -s blob22 --destid b64:$FM2ID --sendCount 5 --receiveCount 5 -m \"Hello from 22, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client22.txt || true  &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client23.log -s blob23  --destid b64:$FM1ID --sendCount 5 --receiveCount 5 -m \"Hello from 23, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client23.txt || true &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-echo "FIXME: The command above causes an UNEXPECTED failure and should be FIXED!"
-wait $PIDVAL
-wait $PIDVAL2
-
-###############################################################################
-# Test  Back Up & Restore
-###############################################################################
-
-echo "START BACKUP AND RESTORE..."
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --writeContact $CLIENTOUT/client120-contact.bin --unsafe -m \"Hello from Client120 to myself, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --writeContact $CLIENTOUT/client121-contact.bin --destfile $CLIENTOUT/client120-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-
-while [ ! -s $CLIENTOUT/client121-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-
-# Client 120 will now wait for client 121's E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Send messages to each other
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Register 120 with UD
-CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --register client120"
-eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-
-# Backup and restore 121
-CLIENTCMD="timeout 60s ../bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --backupOut $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121A.backup.json --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-echo "FIXME: The above exits uncleanly, but a backup file is created. The rest of the test fails...It should be FIXED!"
-wait $PIDVAL
-
-rm -fr blob121
-
-CLIENTCMD="timeout 60s ../bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --backupIn $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121B.backup.json --backupIdList $CLIENTOUT/client121Partners.json --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-
-CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --batchadd $CLIENTOUT/client121Partners.json --unsafe-channel-creation"
-eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --unsafe-channel-creation"
-eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Send messages to each other
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation"
-eval $CLIENTCMD >> $CLIENTOUT/client120.txt || true &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation"
-eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-# TODO: Add test that backs up and restore client 120. To do this, you need to be able to delete old requests
-
-echo "END BACKUP AND RESTORE..."
-
-###############################################################################
-# Test  Proto User
-###############################################################################
-
-# Proto user test: client25 and client26 generate a proto user JSON file and close.
-# Both clients are restarted and load from their respective proto user files and attempt to send.
-
-# Generate contact and proto user file for client25
-echo "TESTING PROTO USER FILE..."
-
-CLIENTCMD="timeout 60s ../bin/client -l $CLIENTOUT/client25.log -s blob11420 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/josh25-contact.bin --protoUserOut $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-
-# Generate contact and proto user file for client 26
-CLIENTCMD="timeout 60s ../bin/client -l $CLIENTOUT/client26.log -s blob11421 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jonah26-contact.bin --protoUserOut $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-
-# Clients will now load from the protoUser file and write to session
-CLIENTCMD="timeout 60s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25  --protoUserPath $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 60s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26  --protoUserPath $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Continue with E2E testing with session files loaded from proto
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --writeContact $CLIENTOUT/josh25-contact.bin --unsafe -m \"Hello from Josh25 to myself, without E2E Encryption\" "
-eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --writeContact $CLIENTOUT/jonah26-contact.bin --destfile $CLIENTOUT/josh25-contact.bin  --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-
-while [ ! -s $CLIENTOUT/jonah26-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-sleep 1
-
-# Print IDs to console
-TMPID=$(cat $CLIENTOUT/client25.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
-JOSHID=${TMPID}
-echo "JOSH ID: $JOSHID"
-TMPID=$(cat $CLIENTOUT/client26.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
-JONAHID=${TMPID}
-echo "JONAH ID: $JONAHID"
-
-## Client 25 will now wait for client 26's E2E Auth channel request and confirm
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destfile $CLIENTOUT/jonah26-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-# Send E2E messages with written sessions
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26  --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-wait $PIDVAL2
-
-###############################################################################
-# Test  Single Use
-###############################################################################
-
-# Single-use test: client53 sends message to client52; client52 responds with
-# the same message in the set number of message parts
-echo "TESTING SINGLE-USE"
-
-# Generate contact file for client52
-CLIENTCMD="../bin/client init -s blob52 -l $CLIENTOUT/client52.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono52-contact.bin"
-eval $CLIENTCMD >> /dev/null 2>&1 &
-PIDVAL=$!
-echo "$CLIENTCMD -- $PIDVAL"
-wait $PIDVAL
-
-# Start client53, which sends a message and then waits for a response
-CLIENTCMD="timeout 240s ../bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client53.log -s blob53 --maxMessages 8 --message \"Test single-use message\" --send -c $CLIENTOUT/jono52-contact.bin --timeout 90s"
-eval $CLIENTCMD >> $CLIENTOUT/client53.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-
-# Start client52, which waits for a message and then responds
-CLIENTCMD="timeout 240s ../bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client52.log -s blob52 --reply --timeout 90s"
-eval $CLIENTCMD >> $CLIENTOUT/client52.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-wait $PIDVAL2
-
-###############################################################################
-# Test  User Discovery
-###############################################################################
-
-if [ "$NETWORKENTRYPOINT" == "localhost:8440" ]
-then
-    # UD Test
-    echo "TESTING USER DISCOVERY..."
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --register josh13 --addemail josh13@elixxir.io --addphone 6178675309US"
-    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --register josh31 --addemail josh31@elixxir.io --addphone 6178675310US"
-    eval $CLIENTCMD >> $CLIENTOUT/client31.txt &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --searchusername josh31 --searchemail josh31@elixxir.io --searchphone 6178675310US"
-    eval $CLIENTCMD > $CLIENTOUT/josh31.bin &
-    PIDVAL1=$!
-    echo "$CLIENTCMD -- $PIDVAL1"
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --searchusername josh13 --searchemail josh13@elixxir.io --searchphone 6178675309US"
-    eval $CLIENTCMD > $CLIENTOUT/josh13.bin &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL2"
-    wait $PIDVAL1
-    wait $PIDVAL2
-
-    # Print IDs to console
-    TMPID=$(cat $CLIENTOUT/client13.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
-    UDID1=${TMPID}
-    echo "UD ID 1: $UDID1"
-    TMPID=$(cat $CLIENTOUT/client31.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
-    UDID2=${TMPID}
-    echo "UD ID 2: $UDID2"
-
-    # Test lookup message
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --lookup b64:$UDID2"
-    eval $CLIENTCMD > $CLIENTOUT/josh31.bin &
-    PIDVAL1=$!
-    echo "$CLIENTCMD -- $PIDVAL1"
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --lookup b64:$UDID1"
-    eval $CLIENTCMD > $CLIENTOUT/josh13.bin &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL2"
-    wait $PIDVAL1
-    wait $PIDVAL2
-
-    # Send auth chan request
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blob13 --destfile $CLIENTOUT/josh31.bin --send-auth-request  --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL2"
-
-    # Approve request and confirm
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blob31 --destfile $CLIENTOUT/josh13.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-    eval $CLIENTCMD >> $CLIENTOUT/client31.txt &
-    PIDVAL1=$!
-    echo "$CLIENTCMD -- $PIDVAL2"
-    wait $PIDVAL1
-    wait $PIDVAL2
-
-    # now test
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blob31 --destfile $CLIENTOUT/josh13.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh31, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client31.txt &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blob13 --destfile $CLIENTOUT/josh31.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh13, with E2E Encryption\""
-    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
-    PIDVAL2=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    wait $PIDVAL2
-
-    # Test Remove User
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --remove josh13"
-    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    wait $PIDVAL
-    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13-2.log -s blob13-2 --register josh13"
-    eval $CLIENTCMD >> $CLIENTOUT/client13-2.txt || true &
-    PIDVAL=$!
-    echo "$CLIENTCMD -- $PIDVAL"
-    echo "NOTE: The command above causes an EXPECTED failure of unable to register!"
-    wait $PIDVAL
-fi
-
-###############################################################################
-# Test  Group Chat
-###############################################################################
-
-echo "TESTING GROUP CHAT..."
-# Create authenticated channel between client 80 and 81
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --writeContact $CLIENTOUT/client80-contact.bin --unsafe -m \"Hello from contact 80 to myself, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client81.log -s blob81 --writeContact $CLIENTOUT/client81-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-
-while [ ! -s $CLIENTOUT/client81-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-echo
-
-TMPID=$(cat $CLIENTOUT/client80.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT80ID=${TMPID}
-echo "CLIENT 80 ID: $CLIENT80ID"
-TMPID=$(cat $CLIENTOUT/client81.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT81ID=${TMPID}
-echo "CLIENT 81 ID: $CLIENT81ID"
-
-# Client 81 will now wait for client 81's E2E Auth channel request and confirm
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client81-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-wait $PIDVAL2
-
-
-# Create authenticated channel between client 80 and 82
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client82.log -s blob82 --writeContact $CLIENTOUT/client82-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-
-while [ ! -s $CLIENTOUT/client82-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-echo
-
-TMPID=$(cat $CLIENTOUT/client82.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT82ID=${TMPID}
-echo "CLIENT 82 ID: $CLIENT82ID"
-
-# Client 82 will now wait for client 82's E2E Auth channel request and confirm
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client82-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-wait $PIDVAL3
-
-# User 1 Creates Group
-echo "Group User IDs: $CLIENT80ID $CLIENT81ID $CLIENT82ID"
-echo "b64:$CLIENT81ID" > $CLIENTOUT/groupParticipants
-echo "b64:$CLIENT82ID" >> $CLIENTOUT/groupParticipants
-CLIENTCMD="timeout 605s ../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --create $CLIENTOUT/groupParticipants --message \"80 inviting 81 and 82 to new group\""
-eval $CLIENTCMD > $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --join"
-eval $CLIENTCMD > $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --join"
-eval $CLIENTCMD > $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-# Extract group ID -- Note to Jono this probably needs to be fixed!
-GROUPID=$(cat $CLIENTOUT/client80.log | grep -a "NewGroupID\:" | awk -F' ' '{print $6}')
-echo "Group ID: $GROUPID"
-
-# Print the group list from all users
-CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --list"
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --list"
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --list"
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-# Print group from all users
-CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --show $GROUPID"
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --show $GROUPID"
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --show $GROUPID"
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-# Now everyone sends their message
-CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 80\""
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 81\""
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 82\""
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-# Everyone waits for their message
-CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 2"
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 2"
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 2"
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-# Member 2 leaves the group
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --leave $GROUPID"
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL2
-
-# 1 and 3 send a message successfully now, 2 does not
-CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 80\""
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 82\""
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-# All 3 wait again
-CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 1"
-eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 1"
-eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 1"
-eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
-PIDVAL3=$!
-echo "$CLIENTCMD -- $PIDVAL3"
-wait $PIDVAL1
-wait $PIDVAL2
-wait $PIDVAL3
-
-echo "GROUP CHAT FINISHED!"
+#
+#runclients() {
+#    echo "Starting clients..."
+#
+#    # Now send messages to each other
+#    CTR=0
+#    for cid in $(seq 4 7)
+#    do
+#        # TODO: Change the recipients to send multiple messages. We can't
+#        #       run multiple clients with the same user id so we need
+#        #       updates to make that work.
+#        #     for nid in 1 2 3 4; do
+#        for nid in 1
+#        do
+#            nid=$(((($cid + 1) % 4) + 4))
+#            eval NICK=\${NICK${cid}}
+#            # Send a regular message
+#            mkdir -p blob$cid
+#            CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client$cid$nid.log -s blob$cid/blob$cid --unsafe --sendid $cid --destid $nid --sendCount 20 --receiveCount 20 -m \"Hello, $nid\""
+#            eval $CLIENTCMD >> $CLIENTOUT/client$cid$nid.txt 2>&1 &
+#            PIDVAL=$!
+#            eval CLIENTS${CTR}=$PIDVAL
+#            echo "$CLIENTCMD -- $PIDVAL"
+#            CTR=$(($CTR + 1))
+#        done
+#    done
+#
+#    echo "WAITING FOR $CTR CLIENTS TO EXIT..."
+#    for i in $(seq 0 $(($CTR - 1)))
+#    do
+#        eval echo "Waiting on \${CLIENTS${i}} ..."
+#        eval wait \${CLIENTS${i}}
+#    done
+#}
+#
+################################################################################
+## Test  Basic Client
+################################################################################
+#
+#
+#if [ "$NETWORKENTRYPOINT" == "localhost:8440" ]
+#then
+#
+#    echo "RUNNING BASIC CLIENTS..."
+#    runclients
+#    echo "RUNNING BASIC CLIENTS (2nd time)..."
+#    runclients
+#
+#    # Send E2E messages between a single user
+#    mkdir -p blob9
+#    mkdir -p blob18
+#    mkdir -p blob91
+#    echo "TEST E2E WITH PRECANNED USERS..."
+#    CLIENTCMD="timeout 240s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    CLIENTCMD="timeout 240s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 2 --receiveCount 2 -s blob18/blob18 --slowPolling --sendid 18 --destid 18 -m \"Hi 18->18, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#
+#
+#    # Send E2E messages between two users
+#    CLIENTCMD="timeout 240s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 3 --receiveCount 3 -s blob9/blob9 --sendid 9 --destid 18 -m \"Hi 9->18, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 &
+#    PIDVAL1=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 3 --receiveCount 3 -s blob18/blob18 --sendid 18 --destid 9 -m \"Hi 18->9, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL1
+#    wait $PIDVAL2
+#
+#
+#    # Send multiple E2E encrypted messages between users that discovered each other
+#    echo "SENDING MESSAGES TO PRECANNED USERS AND FORCING A REKEY..."
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18_rekey.log --sendCount 20 --receiveCount 20 --destid 9 -s blob18/blob18 -m \"Hello, 9, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client18_rekey.txt 2>&1 &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client9_rekey.log --sendCount 20 --receiveCount 20 --destid 18 -s blob9/blob9 -m \"Hello, 18, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client9_rekey.txt 2>&1 &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#
+#    echo "FORCING HISTORICAL ROUNDS... (NON-E2E, PRECAN)"
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client33.log -s blob33 --sendid 1 --destid 2 --sendCount 5 --receiveCount 5 -m \"Hello from 1, without E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client33.txt &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client34.log -s blob34 --sendid 2 --destid 1 --sendCount 5 --receiveCount 5 -m \"Hello from 2, without E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client34.txt &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    wait $PIDVAL2
+#
+#    echo "FORCING MESSAGE PICKUP RETRY... (NON-E2E, PRECAN)"
+#    # Higher timeouts for this test to allow message pickup retry to function
+#    CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client20.log -s blob20 --sendid 20 --destid 21 --sendCount 5 --receiveCount 5 -m \"Hello from 20, without E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client20.txt &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client21.log -s blob21 --sendid 21 --destid 20 --sendCount 5 --receiveCount 5 -m \"Hello from 21, without E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client21.txt &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    wait $PIDVAL2
+#
+#
+#fi
+#
+################################################################################
+## Test  Sending E2E
+################################################################################
+#
+## Non-precanned E2E user messaging
+#echo "SENDING E2E MESSAGES TO NEW USERS..."
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --writeContact $CLIENTOUT/rick42-contact.bin --unsafe -m \"Hello from Rick42 to myself, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --writeContact $CLIENTOUT/ben43-contact.bin --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#
+#while [ ! -s $CLIENTOUT/ben43-contact.bin ]; do
+#    sleep 1
+#    echo -n "."
+#done
+#
+#
+#TMPID=$(cat $CLIENTOUT/client42.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#RICKID=${TMPID}
+#echo "RICK ID: $RICKID"
+#TMPID=$(cat $CLIENTOUT/client43.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#BENID=${TMPID}
+#echo "BEN ID: $BENID"
+#
+## Client 42 will now wait for client 43's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Test destid syntax too, note wait for 11 messages to catch the message from above ^^^
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+################################################################################
+## Test  Renegotiation
+################################################################################
+#
+#echo "TESTING RENEGOTIATION..."
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request  --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL1=$!
+## Unlike before, we don't accept the channel (it's already been accepted, it'll
+## renegotiate), so instead we message ourselves to wait for the trigger
+#echo "$CLIENTCMD -- $PIDVAL1"
+## Client 42 will now wait, again, for client 43's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/rick42-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on renegotiation\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL1
+#wait $PIDVAL2
+##Send a few messages
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+#echo "SWITCHING RENEGOTIATION TEST..."
+## Switch places, 42 renegotiates with 43
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --send-auth-request  --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+## Client 43 will now wait, for client 42's renegotiated E2E Auth channel request and confirm
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on switching renegotiation\""
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL1
+#wait $PIDVAL2
+##Send a few more messages
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43  --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client43.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL
+#wait $PIDVAL2
+#echo "END RENEGOTIATION"
+#
+################################################################################
+## Test  Deleting Contacts & Requests
+################################################################################
+#
+#echo "DELETING CONTACT FROM CLIENT..."
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --delete-channel --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt &
+#echo "$CLIENTCMD -- $PIDVAL"
+#PIDVAL1=$!
+#wait $PIDVAL1
+## NOTE the command below causes the following EXPECTED error:
+## panic: Could not confirm authentication channel for HTAmEeBhbLi6aFqcWsi3OZNDE/642GAchpATjhYFTHwD, waited 120 seconds.
+## Note that the above is example, client IDs will vary
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42  --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!"
+#wait $PIDVAL2
+#
+#echo "DELETING REQUESTS FROM CLIENT.."
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blob44 --writeContact $CLIENTOUT/david44-contact.bin --unsafe -m \"Hello from David44 to myself, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client44.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#
+## NOTE: client45 is a precan user (see runclients), so we skip to 46 here.
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --writeContact $CLIENTOUT/matt46-contact.bin --destfile $CLIENTOUT/david44-contact.bin  --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client46.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL2
+#
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --delete-sent-requests --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client46.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL2
+#
+## This is tricky -- we've deleted the request without having received the
+## confirmation, so now the receiver attempts to accept the channel while the
+## sender (without confirmation) sends to them without an auth channel.
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blob44 --destfile $CLIENTOUT/matt46-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client44.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46  --destfile $CLIENTOUT/david44-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from David, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client46.txt || true &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+################################################################################
+## Test  Simultaneous Auth
+################################################################################
+#
+#echo "CREATING USERS for SIMULTANEOUSAUTH TEST..."
+#JONOID=$(../bin/client init -s blob85 -l $CLIENTOUT/client85.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono85-contact.bin -v $DEBUGLEVEL)
+#SYDNEYID=$(../bin/client init -s blob86 -l $CLIENTOUT/client86.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/sydney86-contact.bin -v $DEBUGLEVEL)
+#echo "JONO ID: $JONOID"
+#echo "SYDNEY ID: $SYDNEYID"
+#
+## Attempt to send an auth request at the same time. It's not guaranteed that
+## one side won't send and the other won't receive before sending their request
+## but this method has proven to be reasonably reliable.
+#echo "STARTING SIMULTANEOUSAUTH TEST..."
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blob85 --destfile $CLIENTOUT/sydney86-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client85.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blob86 --destfile $CLIENTOUT/jono85-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client86.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#
+## Send a couple messages
+#echo "TESTING SIMULTANEOUSAUTH MESSAGE SEND..."
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blob85 --destfile $CLIENTOUT/sydney86-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Sydney from Jono, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client85.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blob86 --destfile $CLIENTOUT/jono85-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Jono from Sydney, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client86.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#
+################################################################################
+## Test  Rekey
+################################################################################
+#
+#echo "CREATING USERS for REKEY TEST..."
+#JAKEID=$(../bin/client init -s blob100 -l $CLIENTOUT/client100.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Jake100-contact.bin -v $DEBUGLEVEL)
+#NIAMHID=$(../bin/client init -s blob101 -l $CLIENTOUT/client101.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Niamh101-contact.bin -v $DEBUGLEVEL)
+#echo "JAKE ID: $JAKEID"
+#echo "NIAMH ID: $NIAMHID"
+#
+#
+#REKEYOPTS="--e2eMaxKeys 15 --e2eMinKeys 10 --e2eNumReKeys 5 --e2eRekeyThreshold 0.75"
+## Client 101 will now send auth request
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --writeContact $CLIENTOUT/Niamh101-contact.bin --destfile $CLIENTOUT/Jake100-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client101.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+## Client 100 will now wait for client 101's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client100.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+#echo "RUNNING REKEY TEST..."
+## Test destid syntax too, note wait for 11 messages to catch the message from above ^^^
+#CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 20 -m \"Hello from Jake100, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client100.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --destid b64:$JAKEID --sendCount 20 --receiveCount 20 -m \"Hello from Niamh101, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client101.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Now we are just going to exhaust all the keys we have and see if we
+## use the unconfirmed channels
+#CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 0 -m \"Hello from Jake100, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client100.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+## And receive those messages sent to us
+#CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --destid b64:$JAKEID --sendCount 0 --receiveCount 20"
+#eval $CLIENTCMD >> $CLIENTOUT/client101.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+################################################################################
+## Test  Historical Rounds
+################################################################################
+#
+#echo "FORCING HISTORICAL ROUNDS..."
+#FH1ID=$(../bin/client init -s blob35 -l $CLIENTOUT/client35.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FH1-contact.bin -v $DEBUGLEVEL)
+#FH2ID=$(../bin/client init -s blob36 -l $CLIENTOUT/client36.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FH2-contact.bin -v $DEBUGLEVEL)
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client35.log -s blob35 --destid b64:$FH2ID --sendCount 5 --receiveCount 5 -m \"Hello from 35, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client35.txt  &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client36.log -s blob36 --destid b64:$FH1ID --sendCount 5 --receiveCount 5 -m \"Hello from 36, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client36.txt  &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+#echo "FORCING MESSAGE PICKUP RETRY... "
+#FM1ID=$(../bin/client init -s blob22 -l $CLIENTOUT/client22.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FM1-contact.bin -v $DEBUGLEVEL)
+#FM2ID=$(../bin/client init -s blob23 -l $CLIENTOUT/client23.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FM2-contact.bin -v $DEBUGLEVEL)
+## Higher timeouts for this test to allow message pickup retry to function
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client22.log -s blob22 --destid b64:$FM2ID --sendCount 5 --receiveCount 5 -m \"Hello from 22, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client22.txt || true  &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client23.log -s blob23  --destid b64:$FM1ID --sendCount 5 --receiveCount 5 -m \"Hello from 23, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client23.txt || true &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#echo "FIXME: The command above causes an UNEXPECTED failure and should be FIXED!"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+################################################################################
+## Test  Back Up & Restore
+################################################################################
+#
+#echo "START BACKUP AND RESTORE..."
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --writeContact $CLIENTOUT/client120-contact.bin --unsafe -m \"Hello from Client120 to myself, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --writeContact $CLIENTOUT/client121-contact.bin --destfile $CLIENTOUT/client120-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#
+#while [ ! -s $CLIENTOUT/client121-contact.bin ]; do
+#    sleep 1
+#    echo -n "."
+#done
+#
+## Client 120 will now wait for client 121's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Send messages to each other
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Register 120 with UD
+#CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --register client120"
+#eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#
+## Backup and restore 121
+#CLIENTCMD="timeout 60s ../bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --backupOut $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121A.backup.json --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#echo "FIXME: The above exits uncleanly, but a backup file is created. The rest of the test fails...It should be FIXED!"
+#wait $PIDVAL
+#
+#rm -fr blob121
+#
+#CLIENTCMD="timeout 60s ../bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --backupIn $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121B.backup.json --backupIdList $CLIENTOUT/client121Partners.json --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#
+#CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --batchadd $CLIENTOUT/client121Partners.json --unsafe-channel-creation"
+#eval $CLIENTCMD >> $CLIENTOUT/client121.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --unsafe-channel-creation"
+#eval $CLIENTCMD >> $CLIENTOUT/client120.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Send messages to each other
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation"
+#eval $CLIENTCMD >> $CLIENTOUT/client120.txt || true &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation"
+#eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## TODO: Add test that backs up and restore client 120. To do this, you need to be able to delete old requests
+#
+#echo "END BACKUP AND RESTORE..."
+#
+################################################################################
+## Test  Proto User
+################################################################################
+#
+## Proto user test: client25 and client26 generate a proto user JSON file and close.
+## Both clients are restarted and load from their respective proto user files and attempt to send.
+#
+## Generate contact and proto user file for client25
+#echo "TESTING PROTO USER FILE..."
+#
+#CLIENTCMD="timeout 60s ../bin/client -l $CLIENTOUT/client25.log -s blob11420 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/josh25-contact.bin --protoUserOut $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#
+## Generate contact and proto user file for client 26
+#CLIENTCMD="timeout 60s ../bin/client -l $CLIENTOUT/client26.log -s blob11421 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jonah26-contact.bin --protoUserOut $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#
+## Clients will now load from the protoUser file and write to session
+#CLIENTCMD="timeout 60s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25  --protoUserPath $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 60s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26  --protoUserPath $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Continue with E2E testing with session files loaded from proto
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --writeContact $CLIENTOUT/josh25-contact.bin --unsafe -m \"Hello from Josh25 to myself, without E2E Encryption\" "
+#eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --writeContact $CLIENTOUT/jonah26-contact.bin --destfile $CLIENTOUT/josh25-contact.bin  --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#
+#while [ ! -s $CLIENTOUT/jonah26-contact.bin ]; do
+#    sleep 1
+#    echo -n "."
+#done
+#sleep 1
+#
+## Print IDs to console
+#TMPID=$(cat $CLIENTOUT/client25.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
+#JOSHID=${TMPID}
+#echo "JOSH ID: $JOSHID"
+#TMPID=$(cat $CLIENTOUT/client26.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
+#JONAHID=${TMPID}
+#echo "JONAH ID: $JONAHID"
+#
+### Client 25 will now wait for client 26's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destfile $CLIENTOUT/jonah26-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+## Send E2E messages with written sessions
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26  --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client25.txt &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client26.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#wait $PIDVAL2
+#
+################################################################################
+## Test  Single Use
+################################################################################
+#
+## Single-use test: client53 sends message to client52; client52 responds with
+## the same message in the set number of message parts
+#echo "TESTING SINGLE-USE"
+#
+## Generate contact file for client52
+#CLIENTCMD="../bin/client init -s blob52 -l $CLIENTOUT/client52.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono52-contact.bin"
+#eval $CLIENTCMD >> /dev/null 2>&1 &
+#PIDVAL=$!
+#echo "$CLIENTCMD -- $PIDVAL"
+#wait $PIDVAL
+#
+## Start client53, which sends a message and then waits for a response
+#CLIENTCMD="timeout 240s ../bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client53.log -s blob53 --maxMessages 8 --message \"Test single-use message\" --send -c $CLIENTOUT/jono52-contact.bin --timeout 90s"
+#eval $CLIENTCMD >> $CLIENTOUT/client53.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#
+## Start client52, which waits for a message and then responds
+#CLIENTCMD="timeout 240s ../bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client52.log -s blob52 --reply --timeout 90s"
+#eval $CLIENTCMD >> $CLIENTOUT/client52.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#
+################################################################################
+## Test  User Discovery
+################################################################################
+#
+#if [ "$NETWORKENTRYPOINT" == "localhost:8440" ]
+#then
+#    # UD Test
+#    echo "TESTING USER DISCOVERY..."
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --register josh13 --addemail josh13@elixxir.io --addphone 6178675309US"
+#    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --register josh31 --addemail josh31@elixxir.io --addphone 6178675310US"
+#    eval $CLIENTCMD >> $CLIENTOUT/client31.txt &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --searchusername josh31 --searchemail josh31@elixxir.io --searchphone 6178675310US"
+#    eval $CLIENTCMD > $CLIENTOUT/josh31.bin &
+#    PIDVAL1=$!
+#    echo "$CLIENTCMD -- $PIDVAL1"
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --searchusername josh13 --searchemail josh13@elixxir.io --searchphone 6178675309US"
+#    eval $CLIENTCMD > $CLIENTOUT/josh13.bin &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL2"
+#    wait $PIDVAL1
+#    wait $PIDVAL2
+#
+#    # Print IDs to console
+#    TMPID=$(cat $CLIENTOUT/client13.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
+#    UDID1=${TMPID}
+#    echo "UD ID 1: $UDID1"
+#    TMPID=$(cat $CLIENTOUT/client31.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
+#    UDID2=${TMPID}
+#    echo "UD ID 2: $UDID2"
+#
+#    # Test lookup message
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --lookup b64:$UDID2"
+#    eval $CLIENTCMD > $CLIENTOUT/josh31.bin &
+#    PIDVAL1=$!
+#    echo "$CLIENTCMD -- $PIDVAL1"
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --lookup b64:$UDID1"
+#    eval $CLIENTCMD > $CLIENTOUT/josh13.bin &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL2"
+#    wait $PIDVAL1
+#    wait $PIDVAL2
+#
+#    # Send auth chan request
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blob13 --destfile $CLIENTOUT/josh31.bin --send-auth-request  --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL2"
+#
+#    # Approve request and confirm
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blob31 --destfile $CLIENTOUT/josh13.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#    eval $CLIENTCMD >> $CLIENTOUT/client31.txt &
+#    PIDVAL1=$!
+#    echo "$CLIENTCMD -- $PIDVAL2"
+#    wait $PIDVAL1
+#    wait $PIDVAL2
+#
+#    # now test
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blob31 --destfile $CLIENTOUT/josh13.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh31, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client31.txt &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blob13 --destfile $CLIENTOUT/josh31.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh13, with E2E Encryption\""
+#    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
+#    PIDVAL2=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    wait $PIDVAL2
+#
+#    # Test Remove User
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --remove josh13"
+#    eval $CLIENTCMD >> $CLIENTOUT/client13.txt &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    wait $PIDVAL
+#    CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13-2.log -s blob13-2 --register josh13"
+#    eval $CLIENTCMD >> $CLIENTOUT/client13-2.txt || true &
+#    PIDVAL=$!
+#    echo "$CLIENTCMD -- $PIDVAL"
+#    echo "NOTE: The command above causes an EXPECTED failure of unable to register!"
+#    wait $PIDVAL
+#fi
+#
+################################################################################
+## Test  Group Chat
+################################################################################
+#
+#echo "TESTING GROUP CHAT..."
+## Create authenticated channel between client 80 and 81
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --writeContact $CLIENTOUT/client80-contact.bin --unsafe -m \"Hello from contact 80 to myself, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client81.log -s blob81 --writeContact $CLIENTOUT/client81-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#
+#while [ ! -s $CLIENTOUT/client81-contact.bin ]; do
+#    sleep 1
+#    echo -n "."
+#done
+#echo
+#
+#TMPID=$(cat $CLIENTOUT/client80.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#CLIENT80ID=${TMPID}
+#echo "CLIENT 80 ID: $CLIENT80ID"
+#TMPID=$(cat $CLIENTOUT/client81.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#CLIENT81ID=${TMPID}
+#echo "CLIENT 81 ID: $CLIENT81ID"
+#
+## Client 81 will now wait for client 81's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client81-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#
+#
+## Create authenticated channel between client 80 and 82
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client82.log -s blob82 --writeContact $CLIENTOUT/client82-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#
+#while [ ! -s $CLIENTOUT/client82-contact.bin ]; do
+#    sleep 1
+#    echo -n "."
+#done
+#echo
+#
+#TMPID=$(cat $CLIENTOUT/client82.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#CLIENT82ID=${TMPID}
+#echo "CLIENT 82 ID: $CLIENT82ID"
+#
+## Client 82 will now wait for client 82's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client82-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#wait $PIDVAL3
+#
+## User 1 Creates Group
+#echo "Group User IDs: $CLIENT80ID $CLIENT81ID $CLIENT82ID"
+#echo "b64:$CLIENT81ID" > $CLIENTOUT/groupParticipants
+#echo "b64:$CLIENT82ID" >> $CLIENTOUT/groupParticipants
+#CLIENTCMD="timeout 605s ../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --create $CLIENTOUT/groupParticipants --message \"80 inviting 81 and 82 to new group\""
+#eval $CLIENTCMD > $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --join"
+#eval $CLIENTCMD > $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --join"
+#eval $CLIENTCMD > $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+## Extract group ID -- Note to Jono this probably needs to be fixed!
+#GROUPID=$(cat $CLIENTOUT/client80.log | grep -a "NewGroupID\:" | awk -F' ' '{print $6}')
+#echo "Group ID: $GROUPID"
+#
+## Print the group list from all users
+#CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --list"
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --list"
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --list"
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+## Print group from all users
+#CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --show $GROUPID"
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --show $GROUPID"
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --show $GROUPID"
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+## Now everyone sends their message
+#CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 80\""
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 81\""
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 82\""
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+## Everyone waits for their message
+#CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 2"
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 2"
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 2"
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+## Member 2 leaves the group
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --leave $GROUPID"
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL2
+#
+## 1 and 3 send a message successfully now, 2 does not
+#CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 80\""
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 82\""
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+## All 3 wait again
+#CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 1"
+#eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 1"
+#eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 1"
+#eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#wait $PIDVAL3
+#
+#echo "GROUP CHAT FINISHED!"
+#
+################################################################################
+## Test  File Transfer
+################################################################################
+#
+#echo "TESTING FILE TRANSFER..."
+#
+## Create authenticated channel between client 110 and 111
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --writeContact $CLIENTOUT/client110-contact.bin --unsafe -m \"Hello from contact 110 to myself, without E2E Encryption\""
+#eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client111.log -s blob111 --writeContact $CLIENTOUT/client111-contact.bin --destfile $CLIENTOUT/client110-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client111.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#
+#while [ ! -s $CLIENTOUT/client111-contact.bin ]; do
+#    sleep 1
+#    echo -n "."
+#done
+#echo
+#
+#TMPID=$(cat $CLIENTOUT/client110.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#CLIENT110ID=${TMPID}
+#echo "CLIENT 110 ID: $CLIENT110ID"
+#TMPID=$(cat $CLIENTOUT/client111.log | grep -a "User\:" | awk -F' ' '{print $5}')
+#CLIENT111ID=${TMPID}
+#echo "CLIENT 111 ID: $CLIENT111ID"
+#
+## Client 110 will now wait for client 111's E2E Auth channel request and confirm
+#CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --destfile $CLIENTOUT/client111-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+#eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#
+## Client 111 sends a file to client 110
+#CLIENTCMD="timeout 360s ../bin/client fileTransfer -s blob110 -l $CLIENTOUT/client110.log $CLIENTFILETRANSFEROPTS"
+#eval $CLIENTCMD > $CLIENTOUT/client110.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#CLIENTCMD="timeout 700s ../bin/client fileTransfer -s blob111 -l $CLIENTOUT/client111.log $CLIENTFILETRANSFEROPTS --sendFile $CLIENTOUT/client110-contact.bin --filePath LoremIpsum.txt --filePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --maxThroughput 1000 --retry 0"
+#eval $CLIENTCMD > $CLIENTOUT/client111.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL1
+#wait $PIDVAL2
+#
+#echo "FILE TRANSFER FINISHED..."
+#
+## echo "TESTING BROADCAST CHANNELS..."
+#
+## New broadcast channel...
+#CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 1800 -l $CLIENTOUT/client130.log -s blob130 --new --channelName \"broadcast_test\" --description \"Integration test channel\" --chanPath results/integration-channel.json --keyPath results/integration-chan-key.pem --receiveCount 0"
+#eval $CLIENTCMD >> $CLIENTOUT/client130.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#wait $PIDVAL1
+#
+## Start client to listen for messages on the channel
+#CLIENTCMD="timeout 480s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 1800 -l $CLIENTOUT/client131.log -s blob131 --chanPath results/integration-channel.json --receiveCount 4"
+#eval $CLIENTCMD >> $CLIENTOUT/client131.txt &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#
+#sleep 10
+#
+## Send symmetric broadcast to channel
+#CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client132.log -s blob132 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --symmetric \"Hello to symmetric channel from channel client 122!\""
+#eval $CLIENTCMD >> $CLIENTOUT/client132.txt &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#
+## Send asymmetric broadcast to channel
+#CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client133.log -s blob133 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 123!\""
+#eval $CLIENTCMD >> $CLIENTOUT/client133.txt &
+#PIDVAL3=$!
+#echo "$CLIENTCMD -- $PIDVAL3"
+#
+## Send symmetric & asymmetric broadcasts to channel
+#CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client134.log -s blob134 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 124!\" --symmetric \"Hello to symmetric channel from channel client 124!\""
+#eval $CLIENTCMD >> $CLIENTOUT/client134.txt &
+#PIDVAL4=$!
+#echo "$CLIENTCMD -- $PIDVAL4"
+#
+#wait $PIDVAL2
+#wait $PIDVAL3
+#wait $PIDVAL4
+#wait $PIDVAL1
+#
+#echo "BROADCAST CHANNELS FINISHED..."
+#
+################################################################################
+## Test ephemeral connections
+################################################################################
+#
+#echo "TESTING EPEHMERAL CONNECTIONS..."
+## Initiate server
+#CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob200 $CONNECTIONOPTS --writeContact $CLIENTOUT/client200-server.bin -l $CLIENTOUT/client200.log --startServer --serverTimeout 1m30s"
+#eval $CLIENTCMD > $CLIENTOUT/client200.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#echo "Sleeping to ensure connection server instantiation"
+#sleep 5
+#
+## Initiate client and send message to server
+#CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob201 --connect $CLIENTOUT/client200-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client201.log  -m \"Hello 200 from 201, using connections\" --receiveCount 0"
+#eval $CLIENTCMD > $CLIENTOUT/client201.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL2
+#wait $PIDVAL1
+#echo "EPHEMERAL CONNECTION TESTS FINISHED"
+#
+################################################################################
+## Test ephemeral authenticated connections
+################################################################################
+#echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..."
+## Initiate server
+#CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob202 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client202-server.bin -l $CLIENTOUT/client202.log --startServer --serverTimeout 1m30s"
+#eval $CLIENTCMD > $CLIENTOUT/client202.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#echo "Sleeping to ensure connection server instantiation"
+#sleep 5
+#
+## Initiate client and send message to server
+#CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob203 --authenticated --connect $CLIENTOUT/client202-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client203.log  -m \"Hello 202 from 203, using connections\" --receiveCount 0"
+#eval $CLIENTCMD > $CLIENTOUT/client203.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL2
+#wait $PIDVAL1
+#echo "EPHEMERAL AUTHENTICATED CONNECTION TESTS FINISHED"
+#
+################################################################################
+## Test non-ephemeral authenticated connections
+################################################################################
+#
+#echo "TESTING NON-EPHEMERAL CONNECTIONS"
+## Initiate server
+#CLIENTCMD="timeout 240s ../bin/client connection -s blob204 $CONNECTIONOPTS --writeContact $CLIENTOUT/client204-server.bin -l $CLIENTOUT/client204.log --startServer --serverTimeout 1m30s"
+#eval $CLIENTCMD > $CLIENTOUT/client204.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#echo "Sleeping to ensure connection server instantiation"
+#sleep 5
+#
+## Initiate client and send message to server
+#CLIENTCMD="timeout 240s ../bin/client connection -s blob205 --connect $CLIENTOUT/client204-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client205.log  -m \"Hello 204 from 205, using connections\" --receiveCount 0"
+#eval $CLIENTCMD > $CLIENTOUT/client205.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL2
+#wait $PIDVAL1
+#echo "NON-EPHEMERAL CONNECTION TEST FINISHED."
+#
+#echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..."
+## Initiate server
+#CLIENTCMD="timeout 240s ../bin/client connection -s blob206 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client206-server.bin -l $CLIENTOUT/client206.log --startServer --serverTimeout 1m30s"
+#eval $CLIENTCMD > $CLIENTOUT/client206.txt 2>&1 &
+#PIDVAL1=$!
+#echo "$CLIENTCMD -- $PIDVAL1"
+#echo "Sleeping to ensure connection server instantiation"
+#sleep 5
+#
+## Initiate client and send message to server
+#CLIENTCMD="timeout 240s ../bin/client connection -s blob207 --authenticated --connect $CLIENTOUT/client206-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client207.log  -m \"Hello 206 from 207, using connections\" --receiveCount 0"
+#eval $CLIENTCMD > $CLIENTOUT/client207.txt 2>&1 &
+#PIDVAL2=$!
+#echo "$CLIENTCMD -- $PIDVAL2"
+#wait $PIDVAL2
+#wait $PIDVAL1
+#echo "Non-Ephemeral Test Complete."
 
 ###############################################################################
-# Test  File Transfer
+# Test Channels
 ###############################################################################
 
-echo "TESTING FILE TRANSFER..."
-
-# Create authenticated channel between client 110 and 111
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --writeContact $CLIENTOUT/client110-contact.bin --unsafe -m \"Hello from contact 110 to myself, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client111.log -s blob111 --writeContact $CLIENTOUT/client111-contact.bin --destfile $CLIENTOUT/client110-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client111.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-
-while [ ! -s $CLIENTOUT/client111-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-echo
+echo "TESTING CHANNELS..."
 
-TMPID=$(cat $CLIENTOUT/client110.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT110ID=${TMPID}
-echo "CLIENT 110 ID: $CLIENT110ID"
-TMPID=$(cat $CLIENTOUT/client111.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT111ID=${TMPID}
-echo "CLIENT 111 ID: $CLIENT111ID"
-
-# Client 110 will now wait for client 111's E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --destfile $CLIENTOUT/client111-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
+# Initialize creator of channel (will use default channel file path in CLI)
+CLIENTCMD="timeout 240s ../bin/client channels -s blob500 -l $CLIENTOPTS $CLIENTOUT/client500.log --channelIdentityPath $CLIENTOUT/channel500 --new --send \"Hello channel, this is 500\""
+eval $CLIENTCMD > $CLIENTOUT/client500.txt 2>&1 &
 PIDVAL1=$!
 echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-wait $PIDVAL2
+wait PIDVAL1
 
-# Client 111 sends a file to client 110
-CLIENTCMD="timeout 360s ../bin/client fileTransfer -s blob110 -l $CLIENTOUT/client110.log $CLIENTFILETRANSFEROPTS"
-eval $CLIENTCMD > $CLIENTOUT/client110.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="timeout 700s ../bin/client fileTransfer -s blob111 -l $CLIENTOUT/client111.log $CLIENTFILETRANSFEROPTS --sendFile $CLIENTOUT/client110-contact.bin --filePath LoremIpsum.txt --filePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --maxThroughput 1000 --retry 0"
-eval $CLIENTCMD > $CLIENTOUT/client111.txt 2>&1 &
+# Initialize client which will join channel (will use default channel file path in CLI)
+CLIENTCMD="timeout 240s ../bin/client channels -s blob501 -l $CLIENTOPTS $CLIENTOUT/client501.log --channelIdentityPath $CLIENTOUT/channel501 --join --send \"Hello channel, this is 501\""
+eval $CLIENTCMD > $CLIENTOUT/client501.txt 2>&1 &
 PIDVAL2=$!
 echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL1
-wait $PIDVAL2
+wait PIDVAL2
 
-echo "FILE TRANSFER FINISHED..."
-
-# echo "TESTING BROADCAST CHANNELS..."
-
-# New broadcast channel...
-CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 1800 -l $CLIENTOUT/client130.log -s blob130 --new --channelName \"broadcast_test\" --description \"Integration test channel\" --chanPath results/integration-channel.json --keyPath results/integration-chan-key.pem --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client130.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-
-# Start client to listen for messages on the channel
-CLIENTCMD="timeout 480s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 1800 -l $CLIENTOUT/client131.log -s blob131 --chanPath results/integration-channel.json --receiveCount 4"
-eval $CLIENTCMD >> $CLIENTOUT/client131.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-
-sleep 10
-
-# Send symmetric broadcast to channel
-CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client132.log -s blob132 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --symmetric \"Hello to symmetric channel from channel client 122!\""
-eval $CLIENTCMD >> $CLIENTOUT/client132.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-
-# Send asymmetric broadcast to channel
-CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client133.log -s blob133 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 123!\""
-eval $CLIENTCMD >> $CLIENTOUT/client133.txt &
+# Initialize another client which will join channel (will use default channel file path in CLI)
+CLIENTCMD="timeout 240s ../bin/client channels -s blob502 -l $CLIENTOPTS $CLIENTOUT/client502.log --channelIdentityPath $CLIENTOUT/channel502 --join --send \"Hello channel, this is 502\""
+eval $CLIENTCMD > $CLIENTOUT/client502.txt 2>&1 &
 PIDVAL3=$!
 echo "$CLIENTCMD -- $PIDVAL3"
+wait PIDVAL3
 
-# Send symmetric & asymmetric broadcasts to channel
-CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client134.log -s blob134 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 124!\" --symmetric \"Hello to symmetric channel from channel client 124!\""
-eval $CLIENTCMD >> $CLIENTOUT/client134.txt &
-PIDVAL4=$!
-echo "$CLIENTCMD -- $PIDVAL4"
-
-wait $PIDVAL2
-wait $PIDVAL3
-wait $PIDVAL4
-wait $PIDVAL1
-
-echo "BROADCAST CHANNELS FINISHED..."
-
-###############################################################################
-# Test ephemeral connections
-###############################################################################
-
-echo "TESTING EPEHMERAL CONNECTIONS..."
-# Initiate server
-CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob200 $CONNECTIONOPTS --writeContact $CLIENTOUT/client200-server.bin -l $CLIENTOUT/client200.log --startServer --serverTimeout 1m30s"
-eval $CLIENTCMD > $CLIENTOUT/client200.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-echo "Sleeping to ensure connection server instantiation"
-sleep 5
-
-# Initiate client and send message to server
-CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob201 --connect $CLIENTOUT/client200-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client201.log  -m \"Hello 200 from 201, using connections\" --receiveCount 0"
-eval $CLIENTCMD > $CLIENTOUT/client201.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL2
-wait $PIDVAL1
-echo "EPHEMERAL CONNECTION TESTS FINISHED"
-
-###############################################################################
-# Test ephemeral authenticated connections
-###############################################################################
-echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..."
-# Initiate server
-CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob202 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client202-server.bin -l $CLIENTOUT/client202.log --startServer --serverTimeout 1m30s"
-eval $CLIENTCMD > $CLIENTOUT/client202.txt 2>&1 &
+# All clients will leave the channel
+CLIENTCMD="timeout 240s ../bin/client channels -s blob500 -l $CLIENTOPTS $CLIENTOUT/client500.log --channelIdentityPath $CLIENTOUT/channel500 --leave"
+eval $CLIENTCMD > $CLIENTOUT/client500.txt 2>&1 &
 PIDVAL1=$!
 echo "$CLIENTCMD -- $PIDVAL1"
-echo "Sleeping to ensure connection server instantiation"
-sleep 5
 
-# Initiate client and send message to server
-CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob203 --authenticated --connect $CLIENTOUT/client202-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client203.log  -m \"Hello 202 from 203, using connections\" --receiveCount 0"
-eval $CLIENTCMD > $CLIENTOUT/client203.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL2
-wait $PIDVAL1
-echo "EPHEMERAL AUTHENTICATED CONNECTION TESTS FINISHED"
-
-###############################################################################
-# Test non-ephemeral authenticated connections
-###############################################################################
-
-echo "TESTING NON-EPHEMERAL CONNECTIONS"
-# Initiate server
-CLIENTCMD="timeout 240s ../bin/client connection -s blob204 $CONNECTIONOPTS --writeContact $CLIENTOUT/client204-server.bin -l $CLIENTOUT/client204.log --startServer --serverTimeout 1m30s"
-eval $CLIENTCMD > $CLIENTOUT/client204.txt 2>&1 &
+CLIENTCMD="timeout 240s ../bin/client channels -s blob501 -l $CLIENTOPTS $CLIENTOUT/client501.log --channelIdentityPath $CLIENTOUT/channel501 --leave"
+eval $CLIENTCMD > $CLIENTOUT/client501.txt 2>&1 &
 PIDVAL1=$!
 echo "$CLIENTCMD -- $PIDVAL1"
-echo "Sleeping to ensure connection server instantiation"
-sleep 5
 
-# Initiate client and send message to server
-CLIENTCMD="timeout 240s ../bin/client connection -s blob205 --connect $CLIENTOUT/client204-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client205.log  -m \"Hello 204 from 205, using connections\" --receiveCount 0"
-eval $CLIENTCMD > $CLIENTOUT/client205.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL2
-wait $PIDVAL1
-echo "NON-EPHEMERAL CONNECTION TEST FINISHED."
-
-echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..."
-# Initiate server
-CLIENTCMD="timeout 240s ../bin/client connection -s blob206 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client206-server.bin -l $CLIENTOUT/client206.log --startServer --serverTimeout 1m30s"
-eval $CLIENTCMD > $CLIENTOUT/client206.txt 2>&1 &
+# Initialize another client which will join channel (will use default channel file path in CLI)
+CLIENTCMD="timeout 240s ../bin/client channels -s blob502 -l $CLIENTOPTS $CLIENTOUT/client502.log --channelIdentityPath $CLIENTOUT/channel502 --leave"
+eval $CLIENTCMD > $CLIENTOUT/client502.txt 2>&1 &
 PIDVAL1=$!
 echo "$CLIENTCMD -- $PIDVAL1"
-echo "Sleeping to ensure connection server instantiation"
-sleep 5
-
-# Initiate client and send message to server
-CLIENTCMD="timeout 240s ../bin/client connection -s blob207 --authenticated --connect $CLIENTOUT/client206-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client207.log  -m \"Hello 206 from 207, using connections\" --receiveCount 0"
-eval $CLIENTCMD > $CLIENTOUT/client207.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL2
-wait $PIDVAL1
-echo "Non-Ephemeral Test Complete."
-
 
 echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..."