gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] branch master updated: contract terminolog


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: contract terminology renaming (#4877)
Date: Mon, 06 Feb 2017 15:43:12 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 8c820b6  contract terminology renaming (#4877)
8c820b6 is described below

commit 8c820b6916841d746475a4f67904272a518a7aa9
Author: Florian Dold <address@hidden>
AuthorDate: Mon Feb 6 15:41:39 2017 +0100

    contract terminology renaming (#4877)
---
 src/benchmark/taler-exchange-benchmark.c           | 10 +--
 src/exchange-lib/baseline/deposit.req              |  2 +-
 src/exchange-lib/exchange_api_common.c             |  2 +-
 src/exchange-lib/exchange_api_deposit.c            | 22 ++---
 src/exchange-lib/exchange_api_refund.c             | 14 ++--
 src/exchange-lib/exchange_api_track_transaction.c  | 13 +--
 src/exchange-lib/exchange_api_track_transfer.c     |  4 +-
 src/exchange-lib/test_exchange_api.c               | 80 +++++++++---------
 src/exchange/afl-tests/id:000001,orig:deposit.req  |  2 +-
 .../id:000703,src:000001,op:flip1,pos:34,+cov      |  2 +-
 .../id:000704,src:000001,op:flip1,pos:50,+cov      |  2 +-
 .../id:000705,src:000001,op:flip1,pos:61,+cov      |  2 +-
 .../afl-tests/id:000706,src:000001,op:flip1,pos:91 |  2 +-
 .../id:000707,src:000001,op:flip1,pos:103,+cov     |  2 +-
 .../id:000708,src:000001,op:flip1,pos:120,+cov     |  2 +-
 .../id:000709,src:000001,op:flip1,pos:129,+cov     |  2 +-
 .../id:000710,src:000001,op:flip1,pos:129,+cov     |  2 +-
 .../id:000711,src:000001,op:flip1,pos:131,+cov     |  2 +-
 .../id:000712,src:000001,op:flip1,pos:139,+cov     |  2 +-
 .../id:000713,src:000001,op:flip1,pos:197,+cov     |  2 +-
 .../id:000714,src:000001,op:flip1,pos:243,+cov     |  2 +-
 .../id:000715,src:000001,op:flip1,pos:365,+cov     |  2 +-
 .../afl-tests/id:000716,src:000001,op:flip1,pos:2  |  2 +-
 .../id:000716,src:000001,op:flip1,pos:456,+cov     |  2 +-
 .../id:000717,src:000001,op:flip1,pos:50,+cov      |  2 +-
 .../id:000717,src:000001,op:flip1,pos:596          |  2 +-
 .../id:000718,src:000001,op:flip1,pos:55,+cov      |  2 +-
 .../id:000718,src:000001,op:flip1,pos:614,+cov     |  2 +-
 .../id:000719,src:000001,op:flip1,pos:629,+cov     |  2 +-
 .../afl-tests/id:000719,src:000001,op:flip1,pos:95 |  2 +-
 .../id:000720,src:000001,op:flip1,pos:102,+cov     |  2 +-
 .../id:000720,src:000001,op:flip1,pos:635,+cov     |  2 +-
 .../id:000721,src:000001,op:flip1,pos:107,+cov     |  2 +-
 .../id:000721,src:000001,op:flip1,pos:683,+cov     |  2 +-
 .../id:000722,src:000001,op:flip1,pos:118,+cov     |  2 +-
 .../id:000722,src:000001,op:flip1,pos:730,+cov     |  2 +-
 .../id:000723,src:000001,op:flip1,pos:124,+cov     |  2 +-
 .../id:000723,src:000001,op:flip1,pos:786,+cov     |  2 +-
 .../id:000724,src:000001,op:flip1,pos:133,+cov     |  2 +-
 .../id:000724,src:000001,op:flip1,pos:796          |  2 +-
 .../id:000725,src:000001,op:flip1,pos:133,+cov     |  2 +-
 .../id:000726,src:000001,op:flip1,pos:1112,+cov    |  2 +-
 .../id:000726,src:000001,op:flip1,pos:135,+cov     |  2 +-
 .../id:000727,src:000001,op:flip1,pos:1112,+cov    |  2 +-
 .../id:000727,src:000001,op:flip1,pos:457,+cov     |  2 +-
 .../id:000728,src:000001,op:flip1,pos:1114,+cov    |  2 +-
 .../id:000728,src:000001,op:flip1,pos:469,+cov     |  2 +-
 .../id:000729,src:000001,op:flip1,pos:1215,+cov    |  2 +-
 .../id:000729,src:000001,op:flip1,pos:508,+cov     |  2 +-
 .../id:000730,src:000001,op:flip1,pos:1353,+cov    |  2 +-
 .../id:000730,src:000001,op:flip1,pos:600          |  2 +-
 .../id:000731,src:000001,op:flip1,pos:1453,+cov    |  2 +-
 .../id:000731,src:000001,op:flip1,pos:618,+cov     |  2 +-
 .../id:000732,src:000001,op:flip1,pos:1574,+cov    |  2 +-
 .../id:000732,src:000001,op:flip1,pos:633,+cov     |  2 +-
 .../id:000733,src:000001,op:flip1,pos:1630         |  2 +-
 .../id:000733,src:000001,op:flip1,pos:687,+cov     |  2 +-
 .../id:000734,src:000001,op:flip1,pos:722,+cov     |  2 +-
 .../id:000734,src:000001,op:flip2,pos:453,+cov     |  2 +-
 .../id:000735,src:000001,op:flip1,pos:734,+cov     |  2 +-
 .../id:000735,src:000001,op:flip2,pos:484,+cov     |  2 +-
 .../id:000736,src:000001,op:flip1,pos:800          |  2 +-
 .../id:000736,src:000001,op:flip2,pos:696,+cov     |  2 +-
 .../id:000737,src:000001,op:flip1,pos:888,+cov     |  2 +-
 .../id:000737,src:000001,op:flip2,pos:843,+cov     |  2 +-
 .../id:000738,src:000001,op:flip1,pos:893,+cov     |  2 +-
 .../id:000738,src:000001,op:flip2,pos:845,+cov     |  2 +-
 .../id:000739,src:000001,op:flip1,pos:1116,+cov    |  2 +-
 .../id:000740,src:000001,op:flip1,pos:1116,+cov    |  2 +-
 .../id:000740,src:000001,op:flip2,pos:995,+cov     |  2 +-
 .../id:000741,src:000001,op:flip1,pos:1118,+cov    |  2 +-
 .../id:000741,src:000001,op:flip2,pos:1031,+cov    |  2 +-
 .../id:000742,src:000001,op:flip1,pos:1170,+cov    |  2 +-
 .../id:000742,src:000001,op:flip2,pos:1135,+cov    |  2 +-
 .../id:000743,src:000001,op:flip1,pos:1205,+cov    |  2 +-
 .../id:000743,src:000001,op:flip2,pos:1286,+cov    |  2 +-
 .../id:000744,src:000001,op:flip1,pos:1301,+cov    |  2 +-
 .../id:000744,src:000001,op:flip2,pos:1655,+cov    |  2 +-
 .../id:000745,src:000001,op:flip1,pos:1369,+cov    |  2 +-
 .../id:000745,src:000001,op:flip4,pos:50,+cov      |  2 +-
 .../id:000746,src:000001,op:flip1,pos:1378,+cov    |  2 +-
 .../id:000746,src:000001,op:flip4,pos:122,+cov     |  2 +-
 .../id:000747,src:000001,op:flip1,pos:1474,+cov    |  2 +-
 .../id:000747,src:000001,op:flip4,pos:351,+cov     |  2 +-
 .../id:000748,src:000001,op:flip1,pos:1510,+cov    |  2 +-
 .../id:000748,src:000001,op:flip4,pos:569,+cov     |  2 +-
 .../id:000749,src:000001,op:flip1,pos:1634         |  2 +-
 .../id:000749,src:000001,op:flip4,pos:788,+cov     |  2 +-
 .../id:000750,src:000001,op:flip1,pos:1657,+cov    |  2 +-
 .../id:000750,src:000001,op:flip4,pos:1198,+cov    |  2 +-
 .../id:000751,src:000001,op:flip1,pos:1712,+cov    |  2 +-
 .../id:000751,src:000001,op:flip8,pos:67,+cov      |  2 +-
 .../id:000752,src:000001,op:flip2,pos:21,+cov      |  2 +-
 .../id:000752,src:000001,op:flip8,pos:1661,+cov    |  2 +-
 .../id:000753,src:000001,op:flip16,pos:390,+cov    |  2 +-
 .../id:000753,src:000001,op:flip2,pos:39,+cov      |  2 +-
 .../id:000754,src:000001,op:flip2,pos:105,+cov     |  2 +-
 .../id:000754,src:000001,op:flip32,pos:339,+cov    |  2 +-
 .../id:000755,src:000001,op:flip2,pos:890,+cov     |  2 +-
 .../id:000755,src:000001,op:flip32,pos:975,+cov    |  2 +-
 ...000756,src:000001,op:arith8,pos:10,val:-30,+cov |  2 +-
 .../id:000756,src:000001,op:flip2,pos:975,+cov     |  2 +-
 ...:000757,src:000001,op:arith8,pos:46,val:+9,+cov |  2 +-
 .../id:000757,src:000001,op:flip2,pos:1509,+cov    |  2 +-
 ...:000758,src:000001,op:arith8,pos:72,val:+5,+cov |  2 +-
 .../id:000758,src:000001,op:flip2,pos:1662,+cov    |  2 +-
 .../id:000759,src:000001,op:flip4,pos:32,+cov      |  2 +-
 .../id:000760,src:000001,op:flip4,pos:300,+cov     |  2 +-
 .../id:000761,src:000001,op:flip4,pos:457,+cov     |  2 +-
 .../id:000762,src:000001,op:flip4,pos:1507,+cov    |  2 +-
 .../id:000763,src:000001,op:flip4,pos:1549,+cov    |  2 +-
 .../id:000764,src:000001,op:flip4,pos:1577,+cov    |  2 +-
 .../id:000765,src:000001,op:flip8,pos:899,+cov     |  2 +-
 .../id:000766,src:000001,op:flip8,pos:1457,+cov    |  2 +-
 .../id:000767,src:000001,op:flip32,pos:301,+cov    |  2 +-
 ...000768,src:000001,op:arith8,pos:18,val:+11,+cov |  2 +-
 ...000769,src:000001,op:arith8,pos:33,val:+17,+cov |  2 +-
 src/exchange/taler-exchange-aggregator.c           |  8 +-
 src/exchange/taler-exchange-httpd_db.c             | 36 ++++-----
 src/exchange/taler-exchange-httpd_db.h             |  4 +-
 src/exchange/taler-exchange-httpd_deposit.c        |  4 +-
 src/exchange/taler-exchange-httpd_refund.c         |  4 +-
 src/exchange/taler-exchange-httpd_responses.c      | 22 ++---
 src/exchange/taler-exchange-httpd_responses.h      | 12 +--
 src/exchange/taler-exchange-httpd_tracking.c       |  4 +-
 src/exchange/test_taler_exchange_aggregator.c      |  2 +-
 src/exchange/test_taler_exchange_httpd.data        |  2 +-
 src/exchangedb/perf_taler_exchangedb_init.c        | 10 +--
 src/exchangedb/plugin_exchangedb_postgres.c        | 94 +++++++++++-----------
 src/exchangedb/test_exchangedb.c                   | 47 +++++------
 src/include/taler_crypto_lib.h                     |  4 +-
 src/include/taler_error_codes.h                    |  2 +-
 src/include/taler_exchange_service.h               | 14 ++--
 src/include/taler_exchangedb_plugin.h              | 34 ++++----
 src/include/taler_signatures.h                     | 36 ++++-----
 135 files changed, 352 insertions(+), 352 deletions(-)

diff --git a/src/benchmark/taler-exchange-benchmark.c 
b/src/benchmark/taler-exchange-benchmark.c
index 7b143a1..cdde9b8 100644
--- a/src/benchmark/taler-exchange-benchmark.c
+++ b/src/benchmark/taler-exchange-benchmark.c
@@ -831,7 +831,7 @@ spend_coin (struct Coin *coin,
   struct GNUNET_TIME_Absolute wire_deadline;
   struct GNUNET_TIME_Absolute timestamp;
   struct GNUNET_TIME_Absolute refund_deadline;
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
   struct TALER_CoinSpendPublicKeyP coin_pub;
   struct TALER_DepositRequestPS dr;
   struct TALER_MerchantPublicKeyP merchant_pub;
@@ -840,8 +840,8 @@ spend_coin (struct Coin *coin,
   GNUNET_CRYPTO_eddsa_key_get_public (&coin->coin_priv.eddsa_priv,
                                      &coin_pub.eddsa_pub);
   GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
-                             &h_contract,
-                             sizeof (h_contract));
+                             &h_proposal_data,
+                             sizeof (h_proposal_data));
   timestamp = GNUNET_TIME_absolute_get ();
   wire_deadline = GNUNET_TIME_absolute_add (timestamp,
                                            GNUNET_TIME_UNIT_WEEKS);
@@ -887,7 +887,7 @@ spend_coin (struct Coin *coin,
   memset (&dr, 0, sizeof (dr));
   dr.purpose.size = htonl (sizeof (struct TALER_DepositRequestPS));
   dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT);
-  dr.h_contract = h_contract;
+  dr.h_proposal_data = h_proposal_data;
   TALER_JSON_hash (merchant_details,
                   &dr.h_wire);
 
@@ -914,7 +914,7 @@ spend_coin (struct Coin *coin,
                                     &amount,
                                     wire_deadline,
                                     merchant_details,
-                                    &h_contract,
+                                    &h_proposal_data,
                                     &coin_pub,
                                     &coin->sig,
                                     &coin->pk->key,
diff --git a/src/exchange-lib/baseline/deposit.req 
b/src/exchange-lib/baseline/deposit.req
index f50d83e..3cf6e4a 100644
--- a/src/exchange-lib/baseline/deposit.req
+++ b/src/exchange-lib/baseline/deposit.req
@@ -5,4 +5,4 @@ Content-Type: application/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange-lib/exchange_api_common.c 
b/src/exchange-lib/exchange_api_common.c
index a531b1c..0d1110b 100644
--- a/src/exchange-lib/exchange_api_common.c
+++ b/src/exchange-lib/exchange_api_common.c
@@ -226,7 +226,7 @@ TALER_EXCHANGE_verify_coin_history (const char *currency,
         return GNUNET_SYSERR;
       }
       /* NOTE/FIXME: theoretically, we could also check that the given
-         transaction_id and merchant_pub and h_contract appear in the
+         transaction_id and merchant_pub and h_proposal_data appear in the
          history under deposits.  However, there is really no benefit
          for the exchange to lie here, so not checking is probably OK
          (an auditor ought to check, though). Then again, we similarly
diff --git a/src/exchange-lib/exchange_api_deposit.c 
b/src/exchange-lib/exchange_api_deposit.c
index 9282bbf..1fc9af6 100644
--- a/src/exchange-lib/exchange_api_deposit.c
+++ b/src/exchange-lib/exchange_api_deposit.c
@@ -274,11 +274,11 @@ handle_deposit_finished (void *cls,
  * @param dki public key information
  * @param amount the amount to be deposited
  * @param h_wire hash of the merchant’s account details
- * @param h_contract hash of the contact of the merchant with the customer 
(further details are never disclosed to the exchange)
+ * @param h_proposal_data hash of the contact of the merchant with the 
customer (further details are never disclosed to the exchange)
  * @param coin_pub coin’s public key
  * @param denom_pub denomination key with which the coin is signed
  * @param denom_sig exchange’s unblinded signature of the coin
- * @param timestamp timestamp when the contract was finalized, must match 
approximately the current time of the exchange
+ * @param timestamp timestamp when the deposit was finalized
  * @param transaction_id transaction id for the transaction between merchant 
and customer
  * @param merchant_pub the public key of the merchant (used to identify the 
merchant for refund requests)
  * @param refund_deadline date until which the merchant can issue a refund to 
the customer via the exchange (can be zero if refunds are not allowed)
@@ -289,7 +289,7 @@ static int
 verify_signatures (const struct TALER_EXCHANGE_DenomPublicKey *dki,
                    const struct TALER_Amount *amount,
                    const struct GNUNET_HashCode *h_wire,
-                   const struct GNUNET_HashCode *h_contract,
+                   const struct GNUNET_HashCode *h_proposal_data,
                    const struct TALER_CoinSpendPublicKeyP *coin_pub,
                    const struct TALER_DenominationSignature *denom_sig,
                    const struct TALER_DenominationPublicKey *denom_pub,
@@ -304,7 +304,7 @@ verify_signatures (const struct 
TALER_EXCHANGE_DenomPublicKey *dki,
 
   dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT);
   dr.purpose.size = htonl (sizeof (struct TALER_DepositRequestPS));
-  dr.h_contract = *h_contract;
+  dr.h_proposal_data = *h_proposal_data;
   dr.h_wire = *h_wire;
   dr.timestamp = GNUNET_TIME_absolute_hton (timestamp);
   dr.refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline);
@@ -374,11 +374,11 @@ verify_signatures (const struct 
TALER_EXCHANGE_DenomPublicKey *dki,
  * @param wire_deadline date until which the merchant would like the exchange 
to settle the balance (advisory, the exchange cannot be
  *        forced to settle in the past or upon very short notice, but of 
course a well-behaved exchange will limit aggregation based on the advice 
received)
  * @param wire_details the merchant’s account details, in a format supported 
by the exchange
- * @param h_contract hash of the contact of the merchant with the customer 
(further details are never disclosed to the exchange)
+ * @param h_proposal_data hash of the contact of the merchant with the 
customer (further details are never disclosed to the exchange)
  * @param coin_pub coin’s public key
  * @param denom_pub denomination key with which the coin is signed
  * @param denom_sig exchange’s unblinded signature of the coin
- * @param timestamp timestamp when the contract was finalized, must match 
approximately the current time of the exchange
+ * @param timestamp timestamp when the contract was finalized, must not be too 
far in the future
  * @param transaction_id transaction id for the transaction between merchant 
and customer
  * @param merchant_pub the public key of the merchant (used to identify the 
merchant for refund requests)
  * @param refund_deadline date until which the merchant can issue a refund to 
the customer via the exchange (can be zero if refunds are not allowed); must 
not be after the @a wire_deadline
@@ -393,7 +393,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle 
*exchange,
                         const struct TALER_Amount *amount,
                         struct GNUNET_TIME_Absolute wire_deadline,
                         json_t *wire_details,
-                        const struct GNUNET_HashCode *h_contract,
+                        const struct GNUNET_HashCode *h_proposal_data,
                         const struct TALER_CoinSpendPublicKeyP *coin_pub,
                         const struct TALER_DenominationSignature *denom_sig,
                         const struct TALER_DenominationPublicKey *denom_pub,
@@ -435,7 +435,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle 
*exchange,
       verify_signatures (dki,
                          amount,
                          &h_wire,
-                         h_contract,
+                         h_proposal_data,
                          coin_pub,
                          denom_sig,
                          denom_pub,
@@ -450,7 +450,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle 
*exchange,
   }
 
   deposit_obj = json_pack ("{s:o, s:O," /* f/wire */
-                           " s:o, s:o," /* H_wire, H_contract */
+                           " s:o, s:o," /* H_wire, h_proposal_data */
                            " s:o, s:o," /* coin_pub, denom_pub */
                            " s:o, s:o," /* ub_sig, timestamp */
                            " s:I, s:o," /* transaction id, merchant_pub */
@@ -459,7 +459,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle 
*exchange,
                            "f", TALER_JSON_from_amount (amount),
                            "wire", wire_details,
                            "H_wire", GNUNET_JSON_from_data_auto (&h_wire),
-                           "H_contract", GNUNET_JSON_from_data_auto 
(h_contract),
+                           "h_proposal_data", GNUNET_JSON_from_data_auto 
(h_proposal_data),
                            "coin_pub", GNUNET_JSON_from_data_auto (coin_pub),
                            "denom_pub", GNUNET_JSON_from_rsa_public_key 
(denom_pub->rsa_public_key),
                            "ub_sig", GNUNET_JSON_from_rsa_signature 
(denom_sig->rsa_signature),
@@ -478,7 +478,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle 
*exchange,
   dh->url = MAH_path_to_url (exchange, "/deposit");
   dh->depconf.purpose.size = htonl (sizeof (struct 
TALER_DepositConfirmationPS));
   dh->depconf.purpose.purpose = htonl 
(TALER_SIGNATURE_EXCHANGE_CONFIRM_DEPOSIT);
-  dh->depconf.h_contract = *h_contract;
+  dh->depconf.h_proposal_data = *h_proposal_data;
   dh->depconf.h_wire = h_wire;
   dh->depconf.transaction_id = GNUNET_htonll (transaction_id);
   dh->depconf.timestamp = GNUNET_TIME_absolute_hton (timestamp);
diff --git a/src/exchange-lib/exchange_api_refund.c 
b/src/exchange-lib/exchange_api_refund.c
index be080c5..3f08e15 100644
--- a/src/exchange-lib/exchange_api_refund.c
+++ b/src/exchange-lib/exchange_api_refund.c
@@ -220,8 +220,8 @@ handle_refund_finished (void *cls,
  *        (as that fee is still being subtracted), and smaller than the amount
  *        (with deposit fee) of the original deposit contribution of this coin
  * @param refund_fee fee applicable to this coin for the refund
- * @param h_contract hash of the contact of the merchant with the customer 
that is being refunded
- * @param transaction_id transaction id for the transaction being refunded, 
must match @a h_contract
+ * @param h_proposal_data hash of the contact of the merchant with the 
customer that is being refunded
+ * @param transaction_id transaction id for the transaction being refunded, 
must match @a h_proposal_data
  * @param coin_pub coin’s public key of the coin from the original deposit 
operation
  * @param rtransaction_id transaction id for the transaction between merchant 
and customer (of refunding operation);
  *                        this is needed as we may first do a partial refund 
and later a full refund.  If both
@@ -237,7 +237,7 @@ struct TALER_EXCHANGE_RefundHandle *
 TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange,
                       const struct TALER_Amount *amount,
                       const struct TALER_Amount *refund_fee,
-                      const struct GNUNET_HashCode *h_contract,
+                      const struct GNUNET_HashCode *h_proposal_data,
                       uint64_t transaction_id,
                       const struct TALER_CoinSpendPublicKeyP *coin_pub,
                       uint64_t rtransaction_id,
@@ -256,7 +256,7 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle 
*exchange,
                 MAH_handle_is_ready (exchange));
   rr.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND);
   rr.purpose.size = htonl (sizeof (struct TALER_RefundRequestPS));
-  rr.h_contract = *h_contract;
+  rr.h_proposal_data = *h_proposal_data;
   rr.transaction_id = GNUNET_htonll (transaction_id);
   rr.coin_pub = *coin_pub;
   GNUNET_CRYPTO_eddsa_key_get_public (&merchant_priv->eddsa_priv,
@@ -271,12 +271,12 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle 
*exchange,
                                            &rr.purpose,
                                            &merchant_sig.eddsa_sig));
   refund_obj = json_pack ("{s:o, s:o," /* amount/fee */
-                         " s:o, s:o," /* H_contract, coin_pub */
+                         " s:o, s:o," /* h_proposal_data, coin_pub */
                          " s:I, s:I," /* transaction id, rtransaction id */
                          " s:o, s:o}", /* merchant_pub, merchant_sig */
                          "refund_amount", TALER_JSON_from_amount (amount),
                          "refund_fee", TALER_JSON_from_amount (refund_fee),
-                         "H_contract", GNUNET_JSON_from_data_auto (h_contract),
+                         "h_proposal_data", GNUNET_JSON_from_data_auto 
(h_proposal_data),
                          "coin_pub", GNUNET_JSON_from_data_auto (coin_pub),
                          "transaction_id", (json_int_t) transaction_id,
                          "rtransaction_id", (json_int_t) rtransaction_id,
@@ -292,7 +292,7 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle 
*exchange,
   rh->url = MAH_path_to_url (exchange, "/refund");
   rh->depconf.purpose.size = htonl (sizeof (struct 
TALER_RefundConfirmationPS));
   rh->depconf.purpose.purpose = htonl 
(TALER_SIGNATURE_EXCHANGE_CONFIRM_REFUND);
-  rh->depconf.h_contract = *h_contract;
+  rh->depconf.h_proposal_data = *h_proposal_data;
   rh->depconf.transaction_id = GNUNET_htonll (transaction_id);
   rh->depconf.coin_pub = *coin_pub;
   rh->depconf.merchant = rr.merchant;
diff --git a/src/exchange-lib/exchange_api_track_transaction.c 
b/src/exchange-lib/exchange_api_track_transaction.c
index 7fd2efb..c40f217 100644
--- a/src/exchange-lib/exchange_api_track_transaction.c
+++ b/src/exchange-lib/exchange_api_track_transaction.c
@@ -254,7 +254,8 @@ handle_deposit_wtid_finished (void *cls,
  * @param exchange the exchange to query
  * @param merchant_priv the merchant's private key
  * @param h_wire hash of merchant's wire transfer details
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the proposal data from the contract
+ *                        between merchant and customer
  * @param coin_pub public key of the coin
  * @param transaction_id transaction identifier
  * @param cb function to call with the result
@@ -265,7 +266,7 @@ struct TALER_EXCHANGE_TrackTransactionHandle *
 TALER_EXCHANGE_track_transaction (struct TALER_EXCHANGE_Handle *exchange,
                              const struct TALER_MerchantPrivateKeyP 
*merchant_priv,
                              const struct GNUNET_HashCode *h_wire,
-                             const struct GNUNET_HashCode *h_contract,
+                             const struct GNUNET_HashCode *h_proposal_data,
                              const struct TALER_CoinSpendPublicKeyP *coin_pub,
                              uint64_t transaction_id,
                              TALER_EXCHANGE_TrackTransactionCallback cb,
@@ -286,7 +287,7 @@ TALER_EXCHANGE_track_transaction (struct 
TALER_EXCHANGE_Handle *exchange,
   }
   dtp.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_TRACK_TRANSACTION);
   dtp.purpose.size = htonl (sizeof (dtp));
-  dtp.h_contract = *h_contract;
+  dtp.h_proposal_data = *h_proposal_data;
   dtp.h_wire = *h_wire;
   dtp.transaction_id = GNUNET_htonll (transaction_id);
   GNUNET_CRYPTO_eddsa_key_get_public (&merchant_priv->eddsa_priv,
@@ -297,11 +298,11 @@ TALER_EXCHANGE_track_transaction (struct 
TALER_EXCHANGE_Handle *exchange,
                  GNUNET_CRYPTO_eddsa_sign (&merchant_priv->eddsa_priv,
                                            &dtp.purpose,
                                            &merchant_sig.eddsa_sig));
-  deposit_wtid_obj = json_pack ("{s:o, s:o," /* H_wire, H_contract */
+  deposit_wtid_obj = json_pack ("{s:o, s:o," /* H_wire, h_proposal_data */
                                 " s:o, s:I," /* coin_pub, transaction_id */
                                 " s:o, s:o}", /* merchant_pub, merchant_sig */
                                 "H_wire", GNUNET_JSON_from_data_auto (h_wire),
-                                "H_contract", GNUNET_JSON_from_data_auto 
(h_contract),
+                                "h_proposal_data", GNUNET_JSON_from_data_auto 
(h_proposal_data),
                                 "coin_pub", GNUNET_JSON_from_data_auto 
(coin_pub),
                                 "transaction_id", (json_int_t) transaction_id,
                                 "merchant_pub", GNUNET_JSON_from_data_auto 
(&dtp.merchant),
@@ -315,7 +316,7 @@ TALER_EXCHANGE_track_transaction (struct 
TALER_EXCHANGE_Handle *exchange,
   dwh->depconf.purpose.size = htonl (sizeof (struct TALER_ConfirmWirePS));
   dwh->depconf.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE);
   dwh->depconf.h_wire = *h_wire;
-  dwh->depconf.h_contract = *h_contract;
+  dwh->depconf.h_proposal_data = *h_proposal_data;
   dwh->depconf.coin_pub = *coin_pub;
   dwh->depconf.transaction_id = GNUNET_htonll (transaction_id);
 
diff --git a/src/exchange-lib/exchange_api_track_transfer.c 
b/src/exchange-lib/exchange_api_track_transfer.c
index 8ed5865..89206e2 100644
--- a/src/exchange-lib/exchange_api_track_transfer.c
+++ b/src/exchange-lib/exchange_api_track_transfer.c
@@ -124,7 +124,7 @@ check_track_transfer_response_ok (struct 
TALER_EXCHANGE_TrackTransferHandle *wdh
       struct TALER_TrackTransferDetails *detail = &details[i];
       struct json_t *detail_j = json_array_get (details_j, i);
       struct GNUNET_JSON_Specification spec_detail[] = {
-        GNUNET_JSON_spec_fixed_auto ("H_contract", &detail->h_contract),
+        GNUNET_JSON_spec_fixed_auto ("h_proposal_data", 
&detail->h_proposal_data),
         GNUNET_JSON_spec_uint64 ("transaction_id", &detail->transaction_id),
         GNUNET_JSON_spec_fixed_auto ("coin_pub", &detail->coin_pub),
         TALER_JSON_spec_amount ("deposit_value", &detail->coin_value),
@@ -143,7 +143,7 @@ check_track_transfer_response_ok (struct 
TALER_EXCHANGE_TrackTransferHandle *wdh
         return GNUNET_SYSERR;
       }
       /* build up big hash for signature checking later */
-      dd.h_contract = detail->h_contract;
+      dd.h_proposal_data = detail->h_proposal_data;
       dd.execution_time = GNUNET_TIME_absolute_hton (exec_time);
       dd.transaction_id = GNUNET_htonll (detail->transaction_id);
       dd.coin_pub = detail->coin_pub;
diff --git a/src/exchange-lib/test_exchange_api.c 
b/src/exchange-lib/test_exchange_api.c
index 289c887..d15459e 100644
--- a/src/exchange-lib/test_exchange_api.c
+++ b/src/exchange-lib/test_exchange_api.c
@@ -371,9 +371,9 @@ struct Command
       const char *wire_details;
 
       /**
-       * JSON string describing the contract between the two parties.
+       * JSON string describing what a proposal is about.
        */
-      const char *contract;
+      const char *proposal_data;
 
       /**
        * Transaction ID to use.
@@ -630,7 +630,7 @@ struct Command
 
       /**
        * Reference to the corresponding deposit operation.
-       * Used to obtain contract details, merchant keys,
+       * Used to obtain proposal details, merchant keys,
        * fee structure, etc.
        */
       const char *deposit_ref;
@@ -1874,7 +1874,7 @@ interpreter_run (void *cls)
     return;
   case OC_DEPOSIT:
     {
-      struct GNUNET_HashCode h_contract;
+      struct GNUNET_HashCode h_proposal_data;
       const struct TALER_CoinSpendPrivateKeyP *coin_priv;
       const struct TALER_EXCHANGE_DenomPublicKey *coin_pk;
       const struct TALER_DenominationSignature *coin_pk_sig;
@@ -1885,7 +1885,7 @@ interpreter_run (void *cls)
       struct GNUNET_TIME_Absolute timestamp;
       struct GNUNET_CRYPTO_EddsaPrivateKey *priv;
       struct TALER_MerchantPublicKeyP merchant_pub;
-      json_t *contract;
+      json_t *proposal_data;
       json_t *wire;
 
       GNUNET_assert (NULL !=
@@ -1928,22 +1928,22 @@ interpreter_run (void *cls)
         fail (is);
         return;
       }
-      contract = json_loads (cmd->details.deposit.contract,
+      proposal_data = json_loads (cmd->details.deposit.proposal_data,
                              JSON_REJECT_DUPLICATES,
                              NULL);
-      if (NULL == contract)
+      if (NULL == proposal_data)
       {
         GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                    "Failed to parse contract details `%s' at %u/%s\n",
-                    cmd->details.deposit.contract,
+                    "Failed to parse proposal data `%s' at %u/%s\n",
+                    cmd->details.deposit.proposal_data,
                     is->ip,
                     cmd->label);
         fail (is);
         return;
       }
-      TALER_JSON_hash (contract,
-                       &h_contract);
-      json_decref (contract);
+      TALER_JSON_hash (proposal_data,
+                       &h_proposal_data);
+      json_decref (proposal_data);
       wire = json_loads (cmd->details.deposit.wire_details,
                          JSON_REJECT_DUPLICATES,
                          NULL);
@@ -1986,7 +1986,7 @@ interpreter_run (void *cls)
         memset (&dr, 0, sizeof (dr));
         dr.purpose.size = htonl (sizeof (struct TALER_DepositRequestPS));
         dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT);
-        dr.h_contract = h_contract;
+        dr.h_proposal_data = h_proposal_data;
         TALER_JSON_hash (wire,
                          &dr.h_wire);
         dr.timestamp = GNUNET_TIME_absolute_hton (timestamp);
@@ -2008,7 +2008,7 @@ interpreter_run (void *cls)
                                   &amount,
                                   wire_deadline,
                                   wire,
-                                  &h_contract,
+                                  &h_proposal_data,
                                   &coin_pub,
                                   coin_pk_sig,
                                   &coin_pk->key,
@@ -2201,9 +2201,9 @@ interpreter_run (void *cls)
   case OC_DEPOSIT_WTID:
     {
       struct GNUNET_HashCode h_wire;
-      struct GNUNET_HashCode h_contract;
+      struct GNUNET_HashCode h_proposal_data;
       json_t *wire;
-      json_t *contract;
+      json_t *proposal_data;
       const struct Command *coin;
       struct TALER_CoinSpendPublicKeyP coin_pub;
 
@@ -2223,18 +2223,18 @@ interpreter_run (void *cls)
       TALER_JSON_hash (wire,
                        &h_wire);
       json_decref (wire);
-      contract = json_loads (ref->details.deposit.contract,
+      proposal_data = json_loads (ref->details.deposit.proposal_data,
                              JSON_REJECT_DUPLICATES,
                              NULL);
-      GNUNET_assert (NULL != contract);
-      TALER_JSON_hash (contract,
-                       &h_contract);
-      json_decref (contract);
+      GNUNET_assert (NULL != proposal_data);
+      TALER_JSON_hash (proposal_data,
+                       &h_proposal_data);
+      json_decref (proposal_data);
       cmd->details.deposit_wtid.dwh
         = TALER_EXCHANGE_track_transaction (exchange,
                                        &ref->details.deposit.merchant_priv,
                                        &h_wire,
-                                       &h_contract,
+                                       &h_proposal_data,
                                        &coin_pub,
                                        ref->details.deposit.transaction_id,
                                        &deposit_wtid_cb,
@@ -2309,8 +2309,8 @@ interpreter_run (void *cls)
   case OC_REFUND:
     {
       const struct Command *coin;
-      struct GNUNET_HashCode h_contract;
-      json_t *contract;
+      struct GNUNET_HashCode h_proposal_data;
+      json_t *proposal_data;
       struct TALER_CoinSpendPublicKeyP coin_pub;
       struct TALER_Amount refund_fee;
 
@@ -2339,13 +2339,13 @@ interpreter_run (void *cls)
       ref = find_command (is,
                           cmd->details.refund.deposit_ref);
       GNUNET_assert (NULL != ref);
-      contract = json_loads (ref->details.deposit.contract,
+      proposal_data = json_loads (ref->details.deposit.proposal_data,
                              JSON_REJECT_DUPLICATES,
                              NULL);
-      GNUNET_assert (NULL != contract);
-      TALER_JSON_hash (contract,
-                       &h_contract);
-      json_decref (contract);
+      GNUNET_assert (NULL != proposal_data);
+      TALER_JSON_hash (proposal_data,
+                       &h_proposal_data);
+      json_decref (proposal_data);
 
       coin = find_command (is,
                            ref->details.deposit.coin_ref);
@@ -2357,7 +2357,7 @@ interpreter_run (void *cls)
         = TALER_EXCHANGE_refund (exchange,
                                  &amount,
                                  &refund_fee,
-                                 &h_contract,
+                                 &h_proposal_data,
                                  ref->details.deposit.transaction_id,
                                  &coin_pub,
                                  cmd->details.refund.rtransaction_id,
@@ -2761,7 +2761,7 @@ run (void *cls)
       .details.deposit.amount = "EUR:5",
       .details.deposit.coin_ref = "withdraw-coin-1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\": [ { \"name\":\"ice cream\", 
\"value\":1 } ] }",
+      .details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"ice 
cream\", \"value\":1 } ] }",
       .details.deposit.transaction_id = 1 },
 
     /* Try to overdraw funds ... */
@@ -2778,7 +2778,7 @@ run (void *cls)
       .details.deposit.amount = "EUR:5",
       .details.deposit.coin_ref = "withdraw-coin-1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":43  }",
-      .details.deposit.contract = "{ \"items\": [ { \"name\":\"ice cream\", 
\"value\":1 } ] }",
+      .details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"ice 
cream\", \"value\":1 } ] }",
       .details.deposit.transaction_id = 1 },
     /* Try to double-spend the 5 EUR coin at the same merchant (but different
        transaction ID) */
@@ -2788,17 +2788,17 @@ run (void *cls)
       .details.deposit.amount = "EUR:5",
       .details.deposit.coin_ref = "withdraw-coin-1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\": [ { \"name\":\"ice cream\", 
\"value\":1 } ] }",
+      .details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"ice 
cream\", \"value\":1 } ] }",
       .details.deposit.transaction_id = 2 },
     /* Try to double-spend the 5 EUR coin at the same merchant (but different
-       contract) */
+       proposal) */
     { .oc = OC_DEPOSIT,
       .label = "deposit-double-3",
       .expected_response_code = MHD_HTTP_FORBIDDEN,
       .details.deposit.amount = "EUR:5",
       .details.deposit.coin_ref = "withdraw-coin-1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\":[{ \"name\":\"ice cream\", 
\"value\":2 } ] }",
+      .details.deposit.proposal_data = "{ \"items\":[{ \"name\":\"ice cream\", 
\"value\":2 } ] }",
       .details.deposit.transaction_id = 1 },
 
     /* ***************** /refresh testing ******************** */
@@ -2824,7 +2824,7 @@ run (void *cls)
       .details.deposit.amount = "EUR:1",
       .details.deposit.coin_ref = "refresh-withdraw-coin-1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\" : [ { \"name\":\"ice cream\", 
\"value\":\"EUR:1\" } ] }",
+      .details.deposit.proposal_data = "{ \"items\" : [ { \"name\":\"ice 
cream\", \"value\":\"EUR:1\" } ] }",
       .details.deposit.transaction_id = 42421 },
 
     /* Melt the rest of the coin's value (EUR:4.00 = 3x EUR:1.03 + 7x 
EUR:0.13) */
@@ -2866,7 +2866,7 @@ run (void *cls)
       .details.deposit.coin_ref = "refresh-reveal-1-idempotency",
       .details.deposit.coin_idx = 0,
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\": [ { \"name\":\"ice cream\", 
\"value\":3 } ] }",
+      .details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"ice 
cream\", \"value\":3 } ] }",
       .details.deposit.transaction_id = 2 },
 
     /* Test successfully spending coins from the refresh operation:
@@ -2878,7 +2878,7 @@ run (void *cls)
       .details.deposit.coin_ref = "refresh-reveal-1",
       .details.deposit.coin_idx = 4,
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":43  }",
-      .details.deposit.contract = "{ \"items\": [ { \"name\":\"ice cream\", 
\"value\":3 } ] }",
+      .details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"ice 
cream\", \"value\":3 } ] }",
       .details.deposit.transaction_id = 2 },
 
     /* Test running a failing melt operation (same operation again must fail) 
*/
@@ -2994,7 +2994,7 @@ run (void *cls)
       .details.deposit.amount = "EUR:5",
       .details.deposit.coin_ref = "withdraw-coin-r1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\" : [ { \"name\":\"ice cream\", 
\"value\":\"EUR:5\" } ] }",
+      .details.deposit.proposal_data = "{ \"items\" : [ { \"name\":\"ice 
cream\", \"value\":\"EUR:5\" } ] }",
       .details.deposit.transaction_id = 424210,
       .details.deposit.refund_deadline = { 60LL * 1000 * 1000 } /* 60 s */,
     },
@@ -3021,7 +3021,7 @@ run (void *cls)
       .details.deposit.amount = "EUR:4.99",
       .details.deposit.coin_ref = "withdraw-coin-r1",
       .details.deposit.wire_details = "{ \"type\":\"test\", 
\"bank_uri\":\"http://localhost:8082/\";, \"account_number\":42  }",
-      .details.deposit.contract = "{ \"items\" : [ { \"name\":\"more ice 
cream\", \"value\":\"EUR:5\" } ] }",
+      .details.deposit.proposal_data = "{ \"items\" : [ { \"name\":\"more ice 
cream\", \"value\":\"EUR:5\" } ] }",
       .details.deposit.transaction_id = 424211,
     },
     /* Run transfers. This will do the transfer as refund deadline was 0 */
diff --git a/src/exchange/afl-tests/id:000001,orig:deposit.req 
b/src/exchange/afl-tests/id:000001,orig:deposit.req
index ec49075..bb4e22b 100644
--- a/src/exchange/afl-tests/id:000001,orig:deposit.req
+++ b/src/exchange/afl-tests/id:000001,orig:deposit.req
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000703,src:000001,op:flip1,pos:34,+cov 
b/src/exchange/afl-tests/id:000703,src:000001,op:flip1,pos:34,+cov
index 8b8afd5..6eaf80c 100644
--- a/src/exchange/afl-tests/id:000703,src:000001,op:flip1,pos:34,+cov
+++ b/src/exchange/afl-tests/id:000703,src:000001,op:flip1,pos:34,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000704,src:000001,op:flip1,pos:50,+cov 
b/src/exchange/afl-tests/id:000704,src:000001,op:flip1,pos:50,+cov
index 7a6dce8..018ff54 100644
--- a/src/exchange/afl-tests/id:000704,src:000001,op:flip1,pos:50,+cov
+++ b/src/exchange/afl-tests/id:000704,src:000001,op:flip1,pos:50,+cov
@@ -6,4 +6,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000705,src:000001,op:flip1,pos:61,+cov 
b/src/exchange/afl-tests/id:000705,src:000001,op:flip1,pos:61,+cov
index 91834a9..82048a6 100644
--- a/src/exchange/afl-tests/id:000705,src:000001,op:flip1,pos:61,+cov
+++ b/src/exchange/afl-tests/id:000705,src:000001,op:flip1,pos:61,+cov
@@ -5,4 +5,4 @@ Content-:!applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000706,src:000001,op:flip1,pos:91 
b/src/exchange/afl-tests/id:000706,src:000001,op:flip1,pos:91
index f0774c0..8e8c13c 100644
--- a/src/exchange/afl-tests/id:000706,src:000001,op:flip1,pos:91
+++ b/src/exchange/afl-tests/id:000706,src:000001,op:flip1,pos:91
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 0658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000707,src:000001,op:flip1,pos:103,+cov 
b/src/exchange/afl-tests/id:000707,src:000001,op:flip1,pos:103,+cov
index 598ffc9..248ea9e 100644
--- a/src/exchange/afl-tests/id:000707,src:000001,op:flip1,pos:103,+cov
+++ b/src/exchange/afl-tests/id:000707,src:000001,op:flip1,pos:103,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect:�100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000708,src:000001,op:flip1,pos:120,+cov 
b/src/exchange/afl-tests/id:000708,src:000001,op:flip1,pos:120,+cov
index cd08770..b27a91c 100644
--- a/src/exchange/afl-tests/id:000708,src:000001,op:flip1,pos:120,+cov
+++ b/src/exchange/afl-tests/id:000708,src:000001,op:flip1,pos:120,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"5b_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"5b_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000709,src:000001,op:flip1,pos:129,+cov 
b/src/exchange/afl-tests/id:000709,src:000001,op:flip1,pos:129,+cov
index 427ee45..057161c 100644
--- a/src/exchange/afl-tests/id:000709,src:000001,op:flip1,pos:129,+cov
+++ b/src/exchange/afl-tests/id:000709,src:000001,op:flip1,pos:129,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"u1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"u1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000710,src:000001,op:flip1,pos:129,+cov 
b/src/exchange/afl-tests/id:000710,src:000001,op:flip1,pos:129,+cov
index 546c225..ed79f76 100644
--- a/src/exchange/afl-tests/id:000710,src:000001,op:flip1,pos:129,+cov
+++ b/src/exchange/afl-tests/id:000710,src:000001,op:flip1,pos:129,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"%1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"%1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000711,src:000001,op:flip1,pos:131,+cov 
b/src/exchange/afl-tests/id:000711,src:000001,op:flip1,pos:131,+cov
index b097e2a..a189ba3 100644
--- a/src/exchange/afl-tests/id:000711,src:000001,op:flip1,pos:131,+cov
+++ b/src/exchange/afl-tests/id:000711,src:000001,op:flip1,pos:131,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51CPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51CPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000712,src:000001,op:flip1,pos:139,+cov 
b/src/exchange/afl-tests/id:000712,src:000001,op:flip1,pos:139,+cov
index f3e2920..73a9e75 100644
--- a/src/exchange/afl-tests/id:000712,src:000001,op:flip1,pos:139,+cov
+++ b/src/exchange/afl-tests/id:000712,src:000001,op:flip1,pos:139,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESgPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESgPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000713,src:000001,op:flip1,pos:197,+cov 
b/src/exchange/afl-tests/id:000713,src:000001,op:flip1,pos:197,+cov
index 74773e9..91da992 100644
--- a/src/exchange/afl-tests/id:000713,src:000001,op:flip1,pos:197,+cov
+++ b/src/exchange/afl-tests/id:000713,src:000001,op:flip1,pos:197,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT42CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT42CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000714,src:000001,op:flip1,pos:243,+cov 
b/src/exchange/afl-tests/id:000714,src:000001,op:flip1,pos:243,+cov
index 38b9232..4a44abd 100644
--- a/src/exchange/afl-tests/id:000714,src:000001,op:flip1,pos:243,+cov
+++ b/src/exchange/afl-tests/id:000714,src:000001,op:flip1,pos:243,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8Mr4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8Mr4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000715,src:000001,op:flip1,pos:365,+cov 
b/src/exchange/afl-tests/id:000715,src:000001,op:flip1,pos:365,+cov
index 8a5422a..eb50de8 100644
--- a/src/exchange/afl-tests/id:000715,src:000001,op:flip1,pos:365,+cov
+++ b/src/exchange/afl-tests/id:000715,src:000001,op:flip1,pos:365,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13QE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13QE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:2 
b/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:2
index bfc0224..2bcfb7e 100644
--- a/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:2
+++ b/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:2
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:456,+cov 
b/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:456,+cov
index 90f879b..fbcec9a 100644
--- a/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:456,+cov
+++ b/src/exchange/afl-tests/id:000716,src:000001,op:flip1,pos:456,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSN6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSN6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:50,+cov 
b/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:50,+cov
index 01aca8b..df1a7ee 100644
--- a/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:50,+cov
+++ b/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:50,+cov
@@ -6,4 +6,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:596 
b/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:596
index e3265d2..149fc24 100644
--- a/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:596
+++ b/src/exchange/afl-tests/id:000717,src:000001,op:flip1,pos:596
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","4imestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","4imestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:55,+cov 
b/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:55,+cov
index 63295d5..4a2879d 100644
--- a/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:55,+cov
+++ b/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:55,+cov
@@ -5,4 +5,4 @@ Con4ent-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:614,+cov 
b/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:614,+cov
index 37d818c..cdaba4b 100644
--- a/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:614,+cov
+++ b/src/exchange/afl-tests/id:000718,src:000001,op:flip1,pos:614,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:629,+cov 
b/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:629,+cov
index 861e99c..8987c4d 100644
--- a/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:629,+cov
+++ b/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:629,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:95 
b/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:95
index 6f50c2e..84b66ed 100644
--- a/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:95
+++ b/src/exchange/afl-tests/id:000719,src:000001,op:flip1,pos:95
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 0658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:102,+cov 
b/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:102,+cov
index 9750ed4..a54ff34 100644
--- a/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:102,+cov
+++ b/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:102,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Exqect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:635,+cov 
b/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:635,+cov
index faf9bbb..8de4fc9 100644
--- a/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:635,+cov
+++ b/src/exchange/afl-tests/id:000720,src:000001,op:flip1,pos:635,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:107,+cov 
b/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:107,+cov
index 410ddd0..bf56e37 100644
--- a/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:107,+cov
+++ b/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:107,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect:�100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:683,+cov 
b/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:683,+cov
index 73f5248..d4cb60a 100644
--- a/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:683,+cov
+++ b/src/exchange/afl-tests/id:000721,src:000001,op:flip1,pos:683,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:118,+cov 
b/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:118,+cov
index b0c0d06..16c9033 100644
--- a/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:118,+cov
+++ b/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:118,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continee
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:730,+cov 
b/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:730,+cov
index 5d230cd..2f97151 100644
--- a/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:730,+cov
+++ b/src/exchange/afl-tests/id:000722,src:000001,op:flip1,pos:730,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:124,+cov 
b/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:124,+cov
index 3447e4b..270faf8 100644
--- a/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:124,+cov
+++ b/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:124,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"5b_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"5b_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:786,+cov 
b/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:786,+cov
index e99546a..0fe0075 100644
--- a/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:786,+cov
+++ b/src/exchange/afl-tests/id:000723,src:000001,op:flip1,pos:786,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:133,+cov 
b/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:133,+cov
index b045d2d..485251b 100644
--- a/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:133,+cov
+++ b/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:133,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"u1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"u1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:796 
b/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:796
index b989d16..48a469b 100644
--- a/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:796
+++ b/src/exchange/afl-tests/id:000724,src:000001,op:flip1,pos:796
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000725,src:000001,op:flip1,pos:133,+cov 
b/src/exchange/afl-tests/id:000725,src:000001,op:flip1,pos:133,+cov
index 36ad08e..5fd94c4 100644
--- a/src/exchange/afl-tests/id:000725,src:000001,op:flip1,pos:133,+cov
+++ b/src/exchange/afl-tests/id:000725,src:000001,op:flip1,pos:133,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"%1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"%1SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:1112,+cov 
b/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:1112,+cov
index c5a1fa7..f75b389 100644
--- a/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:1112,+cov
+++ b/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:1112,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:135,+cov 
b/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:135,+cov
index b8423af..0861b73 100644
--- a/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:135,+cov
+++ b/src/exchange/afl-tests/id:000726,src:000001,op:flip1,pos:135,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51CPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51CPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:1112,+cov 
b/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:1112,+cov
index 722f45b..856d434 100644
--- a/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:1112,+cov
+++ b/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:1112,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:457,+cov 
b/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:457,+cov
index b66ec82..fa57d3e 100644
--- a/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:457,+cov
+++ b/src/exchange/afl-tests/id:000727,src:000001,op:flip1,pos:457,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4SDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4SDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:1114,+cov 
b/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:1114,+cov
index d096b97..e64958c 100644
--- a/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:1114,+cov
+++ b/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:1114,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:469,+cov 
b/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:469,+cov
index 394a850..9992202 100644
--- a/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:469,+cov
+++ b/src/exchange/afl-tests/id:000728,src:000001,op:flip1,pos:469,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT34W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT34W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:1215,+cov 
b/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:1215,+cov
index 830a76c..c1af6b5 100644
--- a/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:1215,+cov
+++ b/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:1215,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:508,+cov 
b/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:508,+cov
index e82a828..66a8044 100644
--- a/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:508,+cov
+++ b/src/exchange/afl-tests/id:000729,src:000001,op:flip1,pos:508,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHW8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHW8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:1353,+cov 
b/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:1353,+cov
index 6c9c4be..cfe4ebb 100644
--- a/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:1353,+cov
+++ b/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:1353,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:600 
b/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:600
index 561d9b6..2f1e814 100644
--- a/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:600
+++ b/src/exchange/afl-tests/id:000730,src:000001,op:flip1,pos:600
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","4imestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","4imestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:1453,+cov 
b/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:1453,+cov
index f39d1a4..d9bc9b7 100644
--- a/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:1453,+cov
+++ b/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:1453,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:618,+cov 
b/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:618,+cov
index 07575f9..fb58eb8 100644
--- a/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:618,+cov
+++ b/src/exchange/afl-tests/id:000731,src:000001,op:flip1,pos:618,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:1574,+cov 
b/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:1574,+cov
index a80fb94..8efb381 100644
--- a/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:1574,+cov
+++ b/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:1574,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:633,+cov 
b/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:633,+cov
index 84c29c5..10a2cf9 100644
--- a/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:633,+cov
+++ b/src/exchange/afl-tests/id:000732,src:000001,op:flip1,pos:633,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:1630 
b/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:1630
index e84d89d..0336979 100644
--- a/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:1630
+++ b/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:1630
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:687,+cov 
b/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:687,+cov
index b12b1ec..1ff1d37 100644
--- a/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:687,+cov
+++ b/src/exchange/afl-tests/id:000733,src:000001,op:flip1,pos:687,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000734,src:000001,op:flip1,pos:722,+cov 
b/src/exchange/afl-tests/id:000734,src:000001,op:flip1,pos:722,+cov
index 63cf05f..91b5386 100644
--- a/src/exchange/afl-tests/id:000734,src:000001,op:flip1,pos:722,+cov
+++ b/src/exchange/afl-tests/id:000734,src:000001,op:flip1,pos:722,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000734,src:000001,op:flip2,pos:453,+cov 
b/src/exchange/afl-tests/id:000734,src:000001,op:flip2,pos:453,+cov
index 0e23b00..0c3c7b2 100644
--- a/src/exchange/afl-tests/id:000734,src:000001,op:flip2,pos:453,+cov
+++ b/src/exchange/afl-tests/id:000734,src:000001,op:flip2,pos:453,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4B�SJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4B�SJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000735,src:000001,op:flip1,pos:734,+cov 
b/src/exchange/afl-tests/id:000735,src:000001,op:flip1,pos:734,+cov
index 6cf6656..6e1d725 100644
--- a/src/exchange/afl-tests/id:000735,src:000001,op:flip1,pos:734,+cov
+++ b/src/exchange/afl-tests/id:000735,src:000001,op:flip1,pos:734,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000735,src:000001,op:flip2,pos:484,+cov 
b/src/exchange/afl-tests/id:000735,src:000001,op:flip2,pos:484,+cov
index 807f2a7..f19627c 100644
--- a/src/exchange/afl-tests/id:000735,src:000001,op:flip2,pos:484,+cov
+++ b/src/exchange/afl-tests/id:000735,src:000001,op:flip2,pos:484,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SL�DSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SL�DSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000736,src:000001,op:flip1,pos:800 
b/src/exchange/afl-tests/id:000736,src:000001,op:flip1,pos:800
index 1b631b8..4a844be 100644
--- a/src/exchange/afl-tests/id:000736,src:000001,op:flip1,pos:800
+++ b/src/exchange/afl-tests/id:000736,src:000001,op:flip1,pos:800
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000736,src:000001,op:flip2,pos:696,+cov 
b/src/exchange/afl-tests/id:000736,src:000001,op:flip2,pos:696,+cov
index 2014e21..a2c5ffc 100644
--- a/src/exchange/afl-tests/id:000736,src:000001,op:flip2,pos:696,+cov
+++ b/src/exchange/afl-tests/id:000736,src:000001,op:flip2,pos:696,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000737,src:000001,op:flip1,pos:888,+cov 
b/src/exchange/afl-tests/id:000737,src:000001,op:flip1,pos:888,+cov
index 04e588c..1deca6a 100644
--- a/src/exchange/afl-tests/id:000737,src:000001,op:flip1,pos:888,+cov
+++ b/src/exchange/afl-tests/id:000737,src:000001,op:flip1,pos:888,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000737,src:000001,op:flip2,pos:843,+cov 
b/src/exchange/afl-tests/id:000737,src:000001,op:flip2,pos:843,+cov
index ba306ce..7e3fb1d 100644
--- a/src/exchange/afl-tests/id:000737,src:000001,op:flip2,pos:843,+cov
+++ b/src/exchange/afl-tests/id:000737,src:000001,op:flip2,pos:843,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000738,src:000001,op:flip1,pos:893,+cov 
b/src/exchange/afl-tests/id:000738,src:000001,op:flip1,pos:893,+cov
index f56cf52..4e0382b 100644
--- a/src/exchange/afl-tests/id:000738,src:000001,op:flip1,pos:893,+cov
+++ b/src/exchange/afl-tests/id:000738,src:000001,op:flip1,pos:893,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000738,src:000001,op:flip2,pos:845,+cov 
b/src/exchange/afl-tests/id:000738,src:000001,op:flip2,pos:845,+cov
index 007d58e..576f8b9 100644
--- a/src/exchange/afl-tests/id:000738,src:000001,op:flip2,pos:845,+cov
+++ b/src/exchange/afl-tests/id:000738,src:000001,op:flip2,pos:845,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000739,src:000001,op:flip1,pos:1116,+cov 
b/src/exchange/afl-tests/id:000739,src:000001,op:flip1,pos:1116,+cov
index a911178..7c33318 100644
--- a/src/exchange/afl-tests/id:000739,src:000001,op:flip1,pos:1116,+cov
+++ b/src/exchange/afl-tests/id:000739,src:000001,op:flip1,pos:1116,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000740,src:000001,op:flip1,pos:1116,+cov 
b/src/exchange/afl-tests/id:000740,src:000001,op:flip1,pos:1116,+cov
index ab1a92e..9d1cc2a 100644
--- a/src/exchange/afl-tests/id:000740,src:000001,op:flip1,pos:1116,+cov
+++ b/src/exchange/afl-tests/id:000740,src:000001,op:flip1,pos:1116,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000740,src:000001,op:flip2,pos:995,+cov 
b/src/exchange/afl-tests/id:000740,src:000001,op:flip2,pos:995,+cov
index 31437d7..ac10b66 100644
--- a/src/exchange/afl-tests/id:000740,src:000001,op:flip2,pos:995,+cov
+++ b/src/exchange/afl-tests/id:000740,src:000001,op:flip2,pos:995,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000741,src:000001,op:flip1,pos:1118,+cov 
b/src/exchange/afl-tests/id:000741,src:000001,op:flip1,pos:1118,+cov
index 0af7933..3907a59 100644
--- a/src/exchange/afl-tests/id:000741,src:000001,op:flip1,pos:1118,+cov
+++ b/src/exchange/afl-tests/id:000741,src:000001,op:flip1,pos:1118,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000741,src:000001,op:flip2,pos:1031,+cov 
b/src/exchange/afl-tests/id:000741,src:000001,op:flip2,pos:1031,+cov
index 51fc01b..5c3326a 100644
--- a/src/exchange/afl-tests/id:000741,src:000001,op:flip2,pos:1031,+cov
+++ b/src/exchange/afl-tests/id:000741,src:000001,op:flip2,pos:1031,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000742,src:000001,op:flip1,pos:1170,+cov 
b/src/exchange/afl-tests/id:000742,src:000001,op:flip1,pos:1170,+cov
index 2907e71..6433aef 100644
--- a/src/exchange/afl-tests/id:000742,src:000001,op:flip1,pos:1170,+cov
+++ b/src/exchange/afl-tests/id:000742,src:000001,op:flip1,pos:1170,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000742,src:000001,op:flip2,pos:1135,+cov 
b/src/exchange/afl-tests/id:000742,src:000001,op:flip2,pos:1135,+cov
index 8023745..e44e953 100644
--- a/src/exchange/afl-tests/id:000742,src:000001,op:flip2,pos:1135,+cov
+++ b/src/exchange/afl-tests/id:000742,src:000001,op:flip2,pos:1135,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000743,src:000001,op:flip1,pos:1205,+cov 
b/src/exchange/afl-tests/id:000743,src:000001,op:flip1,pos:1205,+cov
index 21fa764..4a75273 100644
--- a/src/exchange/afl-tests/id:000743,src:000001,op:flip1,pos:1205,+cov
+++ b/src/exchange/afl-tests/id:000743,src:000001,op:flip1,pos:1205,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000743,src:000001,op:flip2,pos:1286,+cov 
b/src/exchange/afl-tests/id:000743,src:000001,op:flip2,pos:1286,+cov
index 8db7aad..cd0cc68 100644
--- a/src/exchange/afl-tests/id:000743,src:000001,op:flip2,pos:1286,+cov
+++ b/src/exchange/afl-tests/id:000743,src:000001,op:flip2,pos:1286,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000744,src:000001,op:flip1,pos:1301,+cov 
b/src/exchange/afl-tests/id:000744,src:000001,op:flip1,pos:1301,+cov
index fa0448f..0000e0c 100644
--- a/src/exchange/afl-tests/id:000744,src:000001,op:flip1,pos:1301,+cov
+++ b/src/exchange/afl-tests/id:000744,src:000001,op:flip1,pos:1301,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000744,src:000001,op:flip2,pos:1655,+cov 
b/src/exchange/afl-tests/id:000744,src:000001,op:flip2,pos:1655,+cov
index 127b0f5..94a0bf4 100644
--- a/src/exchange/afl-tests/id:000744,src:000001,op:flip2,pos:1655,+cov
+++ b/src/exchange/afl-tests/id:000744,src:000001,op:flip2,pos:1655,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000745,src:000001,op:flip1,pos:1369,+cov 
b/src/exchange/afl-tests/id:000745,src:000001,op:flip1,pos:1369,+cov
index 03a4527..3e2c3e4 100644
--- a/src/exchange/afl-tests/id:000745,src:000001,op:flip1,pos:1369,+cov
+++ b/src/exchange/afl-tests/id:000745,src:000001,op:flip1,pos:1369,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000745,src:000001,op:flip4,pos:50,+cov 
b/src/exchange/afl-tests/id:000745,src:000001,op:flip4,pos:50,+cov
index 76d7a5e..e9ee5d9 100644
--- a/src/exchange/afl-tests/id:000745,src:000001,op:flip4,pos:50,+cov
+++ b/src/exchange/afl-tests/id:000745,src:000001,op:flip4,pos:50,+cov
@@ -4,4 +4,4 @@ Accept: */)
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000746,src:000001,op:flip1,pos:1378,+cov 
b/src/exchange/afl-tests/id:000746,src:000001,op:flip1,pos:1378,+cov
index f6dacce..7464e10 100644
--- a/src/exchange/afl-tests/id:000746,src:000001,op:flip1,pos:1378,+cov
+++ b/src/exchange/afl-tests/id:000746,src:000001,op:flip1,pos:1378,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000746,src:000001,op:flip4,pos:122,+cov 
b/src/exchange/afl-tests/id:000746,src:000001,op:flip4,pos:122,+cov
index 60bf24f..20c1edb 100644
--- a/src/exchange/afl-tests/id:000746,src:000001,op:flip4,pos:122,+cov
+++ b/src/exchange/afl-tests/id:000746,src:000001,op:flip4,pos:122,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ubcsig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ubcsig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000747,src:000001,op:flip1,pos:1474,+cov 
b/src/exchange/afl-tests/id:000747,src:000001,op:flip1,pos:1474,+cov
index 9c51034..5387dff 100644
--- a/src/exchange/afl-tests/id:000747,src:000001,op:flip1,pos:1474,+cov
+++ b/src/exchange/afl-tests/id:000747,src:000001,op:flip1,pos:1474,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000747,src:000001,op:flip4,pos:351,+cov 
b/src/exchange/afl-tests/id:000747,src:000001,op:flip4,pos:351,+cov
index a0878cb..9fe09e8 100644
--- a/src/exchange/afl-tests/id:000747,src:000001,op:flip4,pos:351,+cov
+++ b/src/exchange/afl-tests/id:000747,src:000001,op:flip4,pos:351,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDN66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDN66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000748,src:000001,op:flip1,pos:1510,+cov 
b/src/exchange/afl-tests/id:000748,src:000001,op:flip1,pos:1510,+cov
index 6e75c96..36a33b1 100644
--- a/src/exchange/afl-tests/id:000748,src:000001,op:flip1,pos:1510,+cov
+++ b/src/exchange/afl-tests/id:000748,src:000001,op:flip1,pos:1510,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000748,src:000001,op:flip4,pos:569,+cov 
b/src/exchange/afl-tests/id:000748,src:000001,op:flip4,pos:569,+cov
index 61eaeac..4e7fe3e 100644
--- a/src/exchange/afl-tests/id:000748,src:000001,op:flip4,pos:569,+cov
+++ b/src/exchange/afl-tests/id:000748,src:000001,op:flip4,pos:569,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA25�242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA25�242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000749,src:000001,op:flip1,pos:1634 
b/src/exchange/afl-tests/id:000749,src:000001,op:flip1,pos:1634
index cb0f68d..9166fea 100644
--- a/src/exchange/afl-tests/id:000749,src:000001,op:flip1,pos:1634
+++ b/src/exchange/afl-tests/id:000749,src:000001,op:flip1,pos:1634
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000749,src:000001,op:flip4,pos:788,+cov 
b/src/exchange/afl-tests/id:000749,src:000001,op:flip4,pos:788,+cov
index ba918f1..e86ea3d 100644
--- a/src/exchange/afl-tests/id:000749,src:000001,op:flip4,pos:788,+cov
+++ b/src/exchange/afl-tests/id:000749,src:000001,op:flip4,pos:788,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000750,src:000001,op:flip1,pos:1657,+cov 
b/src/exchange/afl-tests/id:000750,src:000001,op:flip1,pos:1657,+cov
index f502490..d0923b6 100644
--- a/src/exchange/afl-tests/id:000750,src:000001,op:flip1,pos:1657,+cov
+++ b/src/exchange/afl-tests/id:000750,src:000001,op:flip1,pos:1657,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000750,src:000001,op:flip4,pos:1198,+cov 
b/src/exchange/afl-tests/id:000750,src:000001,op:flip4,pos:1198,+cov
index b463b75..c109ec6 100644
--- a/src/exchange/afl-tests/id:000750,src:000001,op:flip4,pos:1198,+cov
+++ b/src/exchange/afl-tests/id:000750,src:000001,op:flip4,pos:1198,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000751,src:000001,op:flip1,pos:1712,+cov 
b/src/exchange/afl-tests/id:000751,src:000001,op:flip1,pos:1712,+cov
index ed22ac2..96608fe 100644
--- a/src/exchange/afl-tests/id:000751,src:000001,op:flip1,pos:1712,+cov
+++ b/src/exchange/afl-tests/id:000751,src:000001,op:flip1,pos:1712,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000751,src:000001,op:flip8,pos:67,+cov 
b/src/exchange/afl-tests/id:000751,src:000001,op:flip8,pos:67,+cov
index 48167b4..b300832 100644
--- a/src/exchange/afl-tests/id:000751,src:000001,op:flip8,pos:67,+cov
+++ b/src/exchange/afl-tests/id:000751,src:000001,op:flip8,pos:67,+cov
@@ -5,4 +5,4 @@ Content-: appli
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000752,src:000001,op:flip2,pos:21,+cov 
b/src/exchange/afl-tests/id:000752,src:000001,op:flip2,pos:21,+cov
index 95dde0c..2332c37 100644
--- a/src/exchange/afl-tests/id:000752,src:000001,op:flip2,pos:21,+cov
+++ b/src/exchange/afl-tests/id:000752,src:000001,op:flip2,pos:21,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000752,src:000001,op:flip8,pos:1661,+cov 
b/src/exchange/afl-tests/id:000752,src:000001,op:flip8,pos:1661,+cov
index 7a74997..31010cc 100644
--- a/src/exchange/afl-tests/id:000752,src:000001,op:flip8,pos:1661,+cov
+++ b/src/exchange/afl-tests/id:000752,src:000001,op:flip8,pos:1661,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000753,src:000001,op:flip16,pos:390,+cov 
b/src/exchange/afl-tests/id:000753,src:000001,op:flip16,pos:390,+cov
index 4088f86..7dea51d 100644
--- a/src/exchange/afl-tests/id:000753,src:000001,op:flip16,pos:390,+cov
+++ b/src/exchange/afl-tests/id:000753,src:000001,op:flip16,pos:390,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336��Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336��Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000753,src:000001,op:flip2,pos:39,+cov 
b/src/exchange/afl-tests/id:000753,src:000001,op:flip2,pos:39,+cov
index 63802d8..4c8e373 100644
--- a/src/exchange/afl-tests/id:000753,src:000001,op:flip2,pos:39,+cov
+++ b/src/exchange/afl-tests/id:000753,src:000001,op:flip2,pos:39,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000754,src:000001,op:flip2,pos:105,+cov 
b/src/exchange/afl-tests/id:000754,src:000001,op:flip2,pos:105,+cov
index 61d1484..b0c905a 100644
--- a/src/exchange/afl-tests/id:000754,src:000001,op:flip2,pos:105,+cov
+++ b/src/exchange/afl-tests/id:000754,src:000001,op:flip2,pos:105,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expecl: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000754,src:000001,op:flip32,pos:339,+cov 
b/src/exchange/afl-tests/id:000754,src:000001,op:flip32,pos:339,+cov
index e33270c..a5bebe4 100644
--- a/src/exchange/afl-tests/id:000754,src:000001,op:flip32,pos:339,+cov
+++ b/src/exchange/afl-tests/id:000754,src:000001,op:flip32,pos:339,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18Dʹ��A46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/Da
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18Dʹ��A46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/Da
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000755,src:000001,op:flip2,pos:890,+cov 
b/src/exchange/afl-tests/id:000755,src:000001,op:flip2,pos:890,+cov
index 4021f8c..f4e8118 100644
--- a/src/exchange/afl-tests/id:000755,src:000001,op:flip2,pos:890,+cov
+++ b/src/exchange/afl-tests/id:000755,src:000001,op:flip2,pos:890,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000755,src:000001,op:flip32,pos:975,+cov 
b/src/exchange/afl-tests/id:000755,src:000001,op:flip32,pos:975,+cov
index f067606..8a9fc2b 100644
--- a/src/exchange/afl-tests/id:000755,src:000001,op:flip32,pos:975,+cov
+++ b/src/exchange/afl-tests/id:000755,src:000001,op:flip32,pos:975,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git 
a/src/exchange/afl-tests/id:000756,src:000001,op:arith8,pos:10,val:-30,+cov 
b/src/exchange/afl-tests/id:000756,src:000001,op:arith8,pos:10,val:-30,+cov
index f01f71e..4a39b59 100644
--- a/src/exchange/afl-tests/id:000756,src:000001,op:arith8,pos:10,val:-30,+cov
+++ b/src/exchange/afl-tests/id:000756,src:000001,op:arith8,pos:10,val:-30,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000756,src:000001,op:flip2,pos:975,+cov 
b/src/exchange/afl-tests/id:000756,src:000001,op:flip2,pos:975,+cov
index 3bb81fc..f0b7020 100644
--- a/src/exchange/afl-tests/id:000756,src:000001,op:flip2,pos:975,+cov
+++ b/src/exchange/afl-tests/id:000756,src:000001,op:flip2,pos:975,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git 
a/src/exchange/afl-tests/id:000757,src:000001,op:arith8,pos:46,val:+9,+cov 
b/src/exchange/afl-tests/id:000757,src:000001,op:arith8,pos:46,val:+9,+cov
index e94ab3d..9183b53 100644
--- a/src/exchange/afl-tests/id:000757,src:000001,op:arith8,pos:46,val:+9,+cov
+++ b/src/exchange/afl-tests/id:000757,src:000001,op:arith8,pos:46,val:+9,+cov
@@ -5,4 +5,4 @@ Content-: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000757,src:000001,op:flip2,pos:1509,+cov 
b/src/exchange/afl-tests/id:000757,src:000001,op:flip2,pos:1509,+cov
index f237a89..b6c61af 100644
--- a/src/exchange/afl-tests/id:000757,src:000001,op:flip2,pos:1509,+cov
+++ b/src/exchange/afl-tests/id:000757,src:000001,op:flip2,pos:1509,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git 
a/src/exchange/afl-tests/id:000758,src:000001,op:arith8,pos:72,val:+5,+cov 
b/src/exchange/afl-tests/id:000758,src:000001,op:arith8,pos:72,val:+5,+cov
index 4e956d1..3896256 100644
--- a/src/exchange/afl-tests/id:000758,src:000001,op:arith8,pos:72,val:+5,+cov
+++ b/src/exchange/afl-tests/id:000758,src:000001,op:arith8,pos:72,val:+5,+cov
@@ -5,4 +5,4 @@ Content-: applicn/jstn
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000758,src:000001,op:flip2,pos:1662,+cov 
b/src/exchange/afl-tests/id:000758,src:000001,op:flip2,pos:1662,+cov
index 725d382..f1a49b6 100644
--- a/src/exchange/afl-tests/id:000758,src:000001,op:flip2,pos:1662,+cov
+++ b/src/exchange/afl-tests/id:000758,src:000001,op:flip2,pos:1662,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000759,src:000001,op:flip4,pos:32,+cov 
b/src/exchange/afl-tests/id:000759,src:000001,op:flip4,pos:32,+cov
index 1641ffd..bb849e6 100644
--- a/src/exchange/afl-tests/id:000759,src:000001,op:flip4,pos:32,+cov
+++ b/src/exchange/afl-tests/id:000759,src:000001,op:flip4,pos:32,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000760,src:000001,op:flip4,pos:300,+cov 
b/src/exchange/afl-tests/id:000760,src:000001,op:flip4,pos:300,+cov
index 7ab6d56..7d380c0 100644
--- a/src/exchange/afl-tests/id:000760,src:000001,op:flip4,pos:300,+cov
+++ b/src/exchange/afl-tests/id:000760,src:000001,op:flip4,pos:300,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSr8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSr8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000761,src:000001,op:flip4,pos:457,+cov 
b/src/exchange/afl-tests/id:000761,src:000001,op:flip4,pos:457,+cov
index 31745f5..4f63003 100644
--- a/src/exchange/afl-tests/id:000761,src:000001,op:flip4,pos:457,+cov
+++ b/src/exchange/afl-tests/id:000761,src:000001,op:flip4,pos:457,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4B�SJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4B�SJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000762,src:000001,op:flip4,pos:1507,+cov 
b/src/exchange/afl-tests/id:000762,src:000001,op:flip4,pos:1507,+cov
index c5eb142..a0ab530 100644
--- a/src/exchange/afl-tests/id:000762,src:000001,op:flip4,pos:1507,+cov
+++ b/src/exchange/afl-tests/id:000762,src:000001,op:flip4,pos:1507,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000763,src:000001,op:flip4,pos:1549,+cov 
b/src/exchange/afl-tests/id:000763,src:000001,op:flip4,pos:1549,+cov
index 775a9f9..67575ea 100644
--- a/src/exchange/afl-tests/id:000763,src:000001,op:flip4,pos:1549,+cov
+++ b/src/exchange/afl-tests/id:000763,src:000001,op:flip4,pos:1549,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000764,src:000001,op:flip4,pos:1577,+cov 
b/src/exchange/afl-tests/id:000764,src:000001,op:flip4,pos:1577,+cov
index dc33780..7cabbf5 100644
--- a/src/exchange/afl-tests/id:000764,src:000001,op:flip4,pos:1577,+cov
+++ b/src/exchange/afl-tests/id:000764,src:000001,op:flip4,pos:1577,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000765,src:000001,op:flip8,pos:899,+cov 
b/src/exchange/afl-tests/id:000765,src:000001,op:flip8,pos:899,+cov
index 5046a0a..ca68756 100644
--- a/src/exchange/afl-tests/id:000765,src:000001,op:flip8,pos:899,+cov
+++ b/src/exchange/afl-tests/id:000765,src:000001,op:flip8,pos:899,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000766,src:000001,op:flip8,pos:1457,+cov 
b/src/exchange/afl-tests/id:000766,src:000001,op:flip8,pos:1457,+cov
index a18b027..f305226 100644
--- a/src/exchange/afl-tests/id:000766,src:000001,op:flip8,pos:1457,+cov
+++ b/src/exchange/afl-tests/id:000766,src:000001,op:flip8,pos:1457,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/afl-tests/id:000767,src:000001,op:flip32,pos:301,+cov 
b/src/exchange/afl-tests/id:000767,src:000001,op:flip32,pos:301,+cov
index 03c18d5..c06a09a 100644
--- a/src/exchange/afl-tests/id:000767,src:000001,op:flip32,pos:301,+cov
+++ b/src/exchange/afl-tests/id:000767,src:000001,op:flip32,pos:301,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSNǭ��6D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/Da
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSNǭ��6D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/Da
 [...]
\ No newline at end of file
diff --git 
a/src/exchange/afl-tests/id:000768,src:000001,op:arith8,pos:18,val:+11,+cov 
b/src/exchange/afl-tests/id:000768,src:000001,op:arith8,pos:18,val:+11,+cov
index 96c53e4..ecaf31f 100644
--- a/src/exchange/afl-tests/id:000768,src:000001,op:arith8,pos:18,val:+11,+cov
+++ b/src/exchange/afl-tests/id:000768,src:000001,op:arith8,pos:18,val:+11,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git 
a/src/exchange/afl-tests/id:000769,src:000001,op:arith8,pos:33,val:+17,+cov 
b/src/exchange/afl-tests/id:000769,src:000001,op:arith8,pos:33,val:+17,+cov
index 52829db..24a6292 100644
--- a/src/exchange/afl-tests/id:000769,src:000001,op:arith8,pos:33,val:+17,+cov
+++ b/src/exchange/afl-tests/id:000769,src:000001,op:arith8,pos:33,val:+17,+cov
@@ -5,4 +5,4 @@ Content-Type: applicn/json
 Content-Length: 1658
 Expect: 100-continue
 
-{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
+{"ub_sig":"51SPJSSDESGPR80A40M74WV140520818ECG26E9M8S0M6CSH6X334GSN8RW30D9G8MT46CA660W34GSG6MT4AD9K8GT3ECSH6MVK0E2374V38H1M8MR4CDJ66MWK4E1S6MR3GCT28CV32H1Q8N23GCHG70S36C1K8MS3GCSN8RV36D9S710KGD9K6GWKEGJ28GRM4CJ56X1K6DJ18D2KGHA46D13GDA66GVK4GHJ8N13AE9J8RVK6GT184S48E1K6X336G9Q8N142CJ4692M6EA16GRKJD9N6523ADA36X13GG9G70TK6DHN68R36CT18GR4CDSJ6CW3GCT364W46CSR8RV42GJ474SMADSH851K4H9Q8GS42CHS8RV3GCSJ64V46DSN8RSM6HHN6N246D9S6934AH9P6X23JGSH652K0DJ5612KJGA26N242CH35452081918G2J2G0","timestamp":"/D
 [...]
\ No newline at end of file
diff --git a/src/exchange/taler-exchange-aggregator.c 
b/src/exchange/taler-exchange-aggregator.c
index 525886d..e9c106d 100644
--- a/src/exchange/taler-exchange-aggregator.c
+++ b/src/exchange/taler-exchange-aggregator.c
@@ -402,7 +402,7 @@ exchange_serve_process_config ()
  * @param amount_with_fee amount that was deposited including fee
  * @param deposit_fee amount the exchange gets to keep as transaction fees
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param wire_deadline by which the merchant adviced that he would like the
  *        wire transfer to be executed
  * @param wire wire details for the merchant
@@ -416,7 +416,7 @@ deposit_cb (void *cls,
             const struct TALER_Amount *amount_with_fee,
             const struct TALER_Amount *deposit_fee,
             uint64_t transaction_id,
-            const struct GNUNET_HashCode *h_contract,
+            const struct GNUNET_HashCode *h_proposal_data,
             struct GNUNET_TIME_Absolute wire_deadline,
             const json_t *wire)
 {
@@ -477,7 +477,7 @@ deposit_cb (void *cls,
  * @param amount_with_fee amount that was deposited including fee
  * @param deposit_fee amount the exchange gets to keep as transaction fees
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param wire_deadline by which the merchant adviced that he would like the
  *        wire transfer to be executed
  * @param wire wire details for the merchant
@@ -491,7 +491,7 @@ aggregate_cb (void *cls,
               const struct TALER_Amount *amount_with_fee,
               const struct TALER_Amount *deposit_fee,
               uint64_t transaction_id,
-              const struct GNUNET_HashCode *h_contract,
+              const struct GNUNET_HashCode *h_proposal_data,
               struct GNUNET_TIME_Absolute wire_deadline,
               const json_t *wire)
 {
diff --git a/src/exchange/taler-exchange-httpd_db.c 
b/src/exchange/taler-exchange-httpd_db.c
index 2381127..99ebacf 100644
--- a/src/exchange/taler-exchange-httpd_db.c
+++ b/src/exchange/taler-exchange-httpd_db.c
@@ -236,7 +236,7 @@ TEH_DB_execute_deposit (struct MHD_Connection *connection,
     return TEH_RESPONSE_reply_deposit_success (connection,
                                                &deposit->coin.coin_pub,
                                                &deposit->h_wire,
-                                               &deposit->h_contract,
+                                               &deposit->h_proposal_data,
                                                deposit->transaction_id,
                                                deposit->timestamp,
                                                deposit->refund_deadline,
@@ -312,7 +312,7 @@ TEH_DB_execute_deposit (struct MHD_Connection *connection,
   return TEH_RESPONSE_reply_deposit_success (connection,
                                              &deposit->coin.coin_pub,
                                              &deposit->h_wire,
-                                             &deposit->h_contract,
+                                             &deposit->h_proposal_data,
                                              deposit->transaction_id,
                                              deposit->timestamp,
                                              deposit->refund_deadline,
@@ -381,8 +381,8 @@ TEH_DB_execute_refund (struct MHD_Connection *connection,
         if ( (0 == memcmp (&dep->merchant_pub,
                            &refund->merchant_pub,
                            sizeof (struct TALER_MerchantPublicKeyP))) &&
-             (0 == memcmp (&dep->h_contract,
-                           &refund->h_contract,
+             (0 == memcmp (&dep->h_proposal_data,
+                           &refund->h_proposal_data,
                            sizeof (struct GNUNET_HashCode))) &&
              (dep->transaction_id == refund->transaction_id) )
         {
@@ -402,8 +402,8 @@ TEH_DB_execute_refund (struct MHD_Connection *connection,
         if ( (0 == memcmp (&ref->merchant_pub,
                            &refund->merchant_pub,
                            sizeof (struct TALER_MerchantPublicKeyP))) &&
-             (0 == memcmp (&ref->h_contract,
-                           &refund->h_contract,
+             (0 == memcmp (&ref->h_proposal_data,
+                           &refund->h_proposal_data,
                            sizeof (struct GNUNET_HashCode))) &&
              (ref->transaction_id == refund->transaction_id) &&
              (ref->rtransaction_id == refund->rtransaction_id) )
@@ -415,8 +415,8 @@ TEH_DB_execute_refund (struct MHD_Connection *connection,
         if ( (0 == memcmp (&ref->merchant_pub,
                            &refund->merchant_pub,
                            sizeof (struct TALER_MerchantPublicKeyP))) &&
-             (0 == memcmp (&ref->h_contract,
-                           &refund->h_contract,
+             (0 == memcmp (&ref->h_proposal_data,
+                           &refund->h_proposal_data,
                            sizeof (struct GNUNET_HashCode))) &&
              (ref->transaction_id == refund->transaction_id) &&
              (ref->rtransaction_id != refund->rtransaction_id) )
@@ -1915,7 +1915,7 @@ struct WtidTransactionContext
  * @param merchant_pub public key of the merchant (should be same for all 
callbacks with the same @e cls)
  * @param h_wire hash of wire transfer details of the merchant (should be same 
for all callbacks with the same @e cls)
  * @param exec_time execution time of the wire transfer (should be same for 
all callbacks with the same @e cls)
- * @param h_contract which contract was this payment about
+ * @param h_proposal_data which proposal was this payment about
  * @param transaction_id merchant's transaction ID for the payment
  * @param coin_pub which public key was this payment about
  * @param deposit_value amount contributed by this coin in total
@@ -1926,7 +1926,7 @@ handle_transaction_data (void *cls,
                          const struct TALER_MerchantPublicKeyP *merchant_pub,
                          const struct GNUNET_HashCode *h_wire,
                          struct GNUNET_TIME_Absolute exec_time,
-                         const struct GNUNET_HashCode *h_contract,
+                         const struct GNUNET_HashCode *h_proposal_data,
                          uint64_t transaction_id,
                          const struct TALER_CoinSpendPublicKeyP *coin_pub,
                          const struct TALER_Amount *deposit_value,
@@ -1989,7 +1989,7 @@ handle_transaction_data (void *cls,
   wdd = GNUNET_new (struct TEH_TrackTransferDetail);
   wdd->deposit_value = *deposit_value;
   wdd->deposit_fee = *deposit_fee;
-  wdd->h_contract = *h_contract;
+  wdd->h_proposal_data = *h_proposal_data;
   wdd->transaction_id = transaction_id;
   wdd->coin_pub = *coin_pub;
   GNUNET_CONTAINER_DLL_insert (ctx->wdd_head,
@@ -2080,9 +2080,9 @@ struct DepositWtidContext
   struct MHD_Connection *connection;
 
   /**
-   * Hash of the contract we are looking up.
+   * Hash of the proposal data we are looking up.
    */
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
 
   /**
    * Hash of the wire transfer details we are looking up.
@@ -2150,7 +2150,7 @@ handle_wtid_data (void *cls,
     else
     {
       ctx->res = TEH_RESPONSE_reply_track_transaction (ctx->connection,
-                                                       &ctx->h_contract,
+                                                       &ctx->h_proposal_data,
                                                        &ctx->h_wire,
                                                        &ctx->coin_pub,
                                                        &coin_delta,
@@ -2167,7 +2167,7 @@ handle_wtid_data (void *cls,
  * associated with the given deposit.
  *
  * @param connection the MHD connection to handle
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the proposal data
  * @param h_wire hash of the wire details
  * @param coin_pub public key of the coin to link
  * @param merchant_pub public key of the merchant
@@ -2176,7 +2176,7 @@ handle_wtid_data (void *cls,
  */
 int
 TEH_DB_execute_track_transaction (struct MHD_Connection *connection,
-                                  const struct GNUNET_HashCode *h_contract,
+                                  const struct GNUNET_HashCode 
*h_proposal_data,
                                   const struct GNUNET_HashCode *h_wire,
                                   const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                   const struct TALER_MerchantPublicKeyP 
*merchant_pub,
@@ -2193,14 +2193,14 @@ TEH_DB_execute_track_transaction (struct MHD_Connection 
*connection,
                                                 TALER_EC_DB_SETUP_FAILED);
   }
   ctx.connection = connection;
-  ctx.h_contract = *h_contract;
+  ctx.h_proposal_data = *h_proposal_data;
   ctx.h_wire = *h_wire;
   ctx.coin_pub = *coin_pub;
   ctx.transaction_id = transaction_id;
   ctx.res = GNUNET_SYSERR;
   ret = TEH_plugin->wire_lookup_deposit_wtid (TEH_plugin->cls,
                                               session,
-                                             h_contract,
+                                             h_proposal_data,
                                              h_wire,
                                              coin_pub,
                                              merchant_pub,
diff --git a/src/exchange/taler-exchange-httpd_db.h 
b/src/exchange/taler-exchange-httpd_db.h
index 87db87f..655ebca 100644
--- a/src/exchange/taler-exchange-httpd_db.h
+++ b/src/exchange/taler-exchange-httpd_db.h
@@ -222,7 +222,7 @@ TEH_DB_execute_track_transfer (struct MHD_Connection 
*connection,
  * associated with the given deposit.
  *
  * @param connection the MHD connection to handle
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the contract
  * @param h_wire hash of the wire details
  * @param coin_pub public key of the coin to link
  * @param merchant_pub public key of the merchant
@@ -231,7 +231,7 @@ TEH_DB_execute_track_transfer (struct MHD_Connection 
*connection,
  */
 int
 TEH_DB_execute_track_transaction (struct MHD_Connection *connection,
-                             const struct GNUNET_HashCode *h_contract,
+                             const struct GNUNET_HashCode *h_proposal_data,
                             const struct GNUNET_HashCode *h_wire,
                             const struct TALER_CoinSpendPublicKeyP *coin_pub,
                             const struct TALER_MerchantPublicKeyP 
*merchant_pub,
diff --git a/src/exchange/taler-exchange-httpd_deposit.c 
b/src/exchange/taler-exchange-httpd_deposit.c
index d3b4d03..5de0a5a 100644
--- a/src/exchange/taler-exchange-httpd_deposit.c
+++ b/src/exchange/taler-exchange-httpd_deposit.c
@@ -54,7 +54,7 @@ verify_and_execute_deposit (struct MHD_Connection *connection,
 
   dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT);
   dr.purpose.size = htonl (sizeof (struct TALER_DepositRequestPS));
-  dr.h_contract = deposit->h_contract;
+  dr.h_proposal_data = deposit->h_proposal_data;
   dr.h_wire = deposit->h_wire;
   dr.timestamp = GNUNET_TIME_absolute_hton (deposit->timestamp);
   dr.refund_deadline = GNUNET_TIME_absolute_hton (deposit->refund_deadline);
@@ -119,7 +119,7 @@ TEH_DEPOSIT_handler_deposit (struct TEH_RequestHandler *rh,
     TALER_JSON_spec_denomination_signature ("ub_sig", &deposit.coin.denom_sig),
     GNUNET_JSON_spec_fixed_auto ("coin_pub", &deposit.coin.coin_pub),
     GNUNET_JSON_spec_fixed_auto ("merchant_pub", &deposit.merchant_pub),
-    GNUNET_JSON_spec_fixed_auto ("H_contract", &deposit.h_contract),
+    GNUNET_JSON_spec_fixed_auto ("h_proposal_data", &deposit.h_proposal_data),
     GNUNET_JSON_spec_fixed_auto ("H_wire", &deposit.h_wire),
     GNUNET_JSON_spec_fixed_auto ("coin_sig",  &deposit.csig),
     GNUNET_JSON_spec_uint64 ("transaction_id", &deposit.transaction_id),
diff --git a/src/exchange/taler-exchange-httpd_refund.c 
b/src/exchange/taler-exchange-httpd_refund.c
index 591bb18..235467e 100644
--- a/src/exchange/taler-exchange-httpd_refund.c
+++ b/src/exchange/taler-exchange-httpd_refund.c
@@ -54,7 +54,7 @@ verify_and_execute_refund (struct MHD_Connection *connection,
 
   rr.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND);
   rr.purpose.size = htonl (sizeof (struct TALER_RefundRequestPS));
-  rr.h_contract = refund->h_contract;
+  rr.h_proposal_data = refund->h_proposal_data;
   rr.transaction_id = GNUNET_htonll (refund->transaction_id);
   rr.coin_pub = refund->coin.coin_pub;
   rr.merchant = refund->merchant_pub;
@@ -123,7 +123,7 @@ TEH_REFUND_handler_refund (struct TEH_RequestHandler *rh,
   struct GNUNET_JSON_Specification spec[] = {
     TALER_JSON_spec_amount ("refund_amount", &refund.refund_amount),
     TALER_JSON_spec_amount ("refund_fee", &refund.refund_fee),
-    GNUNET_JSON_spec_fixed_auto ("H_contract", &refund.h_contract),
+    GNUNET_JSON_spec_fixed_auto ("h_proposal_data", &refund.h_proposal_data),
     GNUNET_JSON_spec_uint64 ("transaction_id", &refund.transaction_id),
     GNUNET_JSON_spec_fixed_auto ("coin_pub", &refund.coin.coin_pub),
     GNUNET_JSON_spec_fixed_auto ("merchant_pub", &refund.merchant_pub),
diff --git a/src/exchange/taler-exchange-httpd_responses.c 
b/src/exchange/taler-exchange-httpd_responses.c
index 2ecd3b4..5b73461 100644
--- a/src/exchange/taler-exchange-httpd_responses.c
+++ b/src/exchange/taler-exchange-httpd_responses.c
@@ -376,7 +376,7 @@ TEH_RESPONSE_reply_invalid_json (struct MHD_Connection 
*connection)
  * @param connection connection to the client
  * @param coin_pub public key of the coin
  * @param h_wire hash of wire details
- * @param h_contract hash of contract details
+ * @param h_proposal_data hash of contract details
  * @param transaction_id transaction ID
  * @param timestamp client's timestamp
  * @param refund_deadline until when this deposit be refunded
@@ -388,7 +388,7 @@ int
 TEH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection,
                                     const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                     const struct GNUNET_HashCode *h_wire,
-                                    const struct GNUNET_HashCode *h_contract,
+                                    const struct GNUNET_HashCode 
*h_proposal_data,
                                     uint64_t transaction_id,
                                     struct GNUNET_TIME_Absolute timestamp,
                                     struct GNUNET_TIME_Absolute 
refund_deadline,
@@ -401,7 +401,7 @@ TEH_RESPONSE_reply_deposit_success (struct MHD_Connection 
*connection,
 
   dc.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_DEPOSIT);
   dc.purpose.size = htonl (sizeof (struct TALER_DepositConfirmationPS));
-  dc.h_contract = *h_contract;
+  dc.h_proposal_data = *h_proposal_data;
   dc.h_wire = *h_wire;
   dc.transaction_id = GNUNET_htonll (transaction_id);
   dc.timestamp = GNUNET_TIME_absolute_hton (timestamp);
@@ -452,7 +452,7 @@ compile_transaction_history (const struct 
TALER_EXCHANGEDB_TransactionList *tl)
         value = deposit->amount_with_fee;
         dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT);
         dr.purpose.size = htonl (sizeof (struct TALER_DepositRequestPS));
-        dr.h_contract = deposit->h_contract;
+        dr.h_proposal_data = deposit->h_proposal_data;
         dr.h_wire = deposit->h_wire;
         dr.timestamp = GNUNET_TIME_absolute_hton (deposit->timestamp);
         dr.refund_deadline = GNUNET_TIME_absolute_hton 
(deposit->refund_deadline);
@@ -527,7 +527,7 @@ compile_transaction_history (const struct 
TALER_EXCHANGEDB_TransactionList *tl)
         }
         rr.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND);
         rr.purpose.size = htonl (sizeof (struct TALER_RefundRequestPS));
-        rr.h_contract = refund->h_contract;
+        rr.h_proposal_data = refund->h_proposal_data;
         rr.transaction_id = GNUNET_htonll (refund->transaction_id);
         rr.coin_pub = refund->coin.coin_pub;
         rr.merchant = refund->merchant_pub;
@@ -771,7 +771,7 @@ TEH_RESPONSE_reply_refund_success (struct MHD_Connection 
*connection,
 
   rc.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_REFUND);
   rc.purpose.size = htonl (sizeof (struct TALER_RefundConfirmationPS));
-  rc.h_contract = refund->h_contract;
+  rc.h_proposal_data = refund->h_proposal_data;
   rc.transaction_id = GNUNET_htonll (refund->transaction_id);
   rc.coin_pub = refund->coin.coin_pub;
   rc.merchant = refund->merchant_pub;
@@ -1167,7 +1167,7 @@ TEH_RESPONSE_reply_transfer_pending (struct 
MHD_Connection *connection,
  * them. Generates the 200 reply.
  *
  * @param connection connection to the client
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the contract
  * @param h_wire hash of wire account details
  * @param coin_pub public key of the coin
  * @param coin_contribution how much did the coin we asked about
@@ -1179,7 +1179,7 @@ TEH_RESPONSE_reply_transfer_pending (struct 
MHD_Connection *connection,
  */
 int
 TEH_RESPONSE_reply_track_transaction (struct MHD_Connection *connection,
-                                      const struct GNUNET_HashCode *h_contract,
+                                      const struct GNUNET_HashCode 
*h_proposal_data,
                                       const struct GNUNET_HashCode *h_wire,
                                       const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                       const struct TALER_Amount 
*coin_contribution,
@@ -1194,7 +1194,7 @@ TEH_RESPONSE_reply_track_transaction (struct 
MHD_Connection *connection,
   cw.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE);
   cw.purpose.size = htonl (sizeof (struct TALER_ConfirmWirePS));
   cw.h_wire = *h_wire;
-  cw.h_contract = *h_contract;
+  cw.h_proposal_data = *h_proposal_data;
   cw.wtid = *wtid;
   cw.coin_pub = *coin_pub;
   cw.transaction_id = GNUNET_htonll (transaction_id);
@@ -1248,7 +1248,7 @@ TEH_RESPONSE_reply_track_transfer_details (struct 
MHD_Connection *connection,
   hash_context = GNUNET_CRYPTO_hash_context_start ();
   for (wdd_pos = wdd_head; NULL != wdd_pos; wdd_pos = wdd_pos->next)
   {
-    dd.h_contract = wdd_pos->h_contract;
+    dd.h_proposal_data = wdd_pos->h_proposal_data;
     dd.execution_time = GNUNET_TIME_absolute_hton (exec_time);
     dd.transaction_id = GNUNET_htonll (wdd_pos->transaction_id);
     dd.coin_pub = wdd_pos->coin_pub;
@@ -1262,7 +1262,7 @@ TEH_RESPONSE_reply_track_transfer_details (struct 
MHD_Connection *connection,
     GNUNET_assert (0 ==
                    json_array_append_new (deposits,
                                           json_pack ("{s:o, s:I, s:o, s:o, 
s:o}",
-                                                     "H_contract", 
GNUNET_JSON_from_data_auto (&wdd_pos->h_contract),
+                                                     "h_proposal_data", 
GNUNET_JSON_from_data_auto (&wdd_pos->h_proposal_data),
                                                      "transaction_id", 
(json_int_t) wdd_pos->transaction_id,
                                                      "coin_pub", 
GNUNET_JSON_from_data_auto (&wdd_pos->coin_pub),
                                                      "deposit_value", 
TALER_JSON_from_amount (&wdd_pos->deposit_value),
diff --git a/src/exchange/taler-exchange-httpd_responses.h 
b/src/exchange/taler-exchange-httpd_responses.h
index 70d384f..5c7e392 100644
--- a/src/exchange/taler-exchange-httpd_responses.h
+++ b/src/exchange/taler-exchange-httpd_responses.h
@@ -231,7 +231,7 @@ TEH_RESPONSE_reply_invalid_json (struct MHD_Connection 
*connectionx);
  * @param connection connection to the client
  * @param coin_pub public key of the coin
  * @param h_wire hash of wire details
- * @param h_contract hash of contract details
+ * @param h_proposal_data hash of proposal data
  * @param transaction_id transaction ID
  * @param timestamp client's timestamp
  * @param refund_deadline until when this deposit be refunded
@@ -243,7 +243,7 @@ int
 TEH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection,
                                     const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                     const struct GNUNET_HashCode *h_wire,
-                                    const struct GNUNET_HashCode *h_contract,
+                                    const struct GNUNET_HashCode 
*h_proposal_data,
                                     uint64_t transaction_id,
                                     struct GNUNET_TIME_Absolute timestamp,
                                     struct GNUNET_TIME_Absolute 
refund_deadline,
@@ -337,7 +337,7 @@ TEH_RESPONSE_reply_transfer_pending (struct MHD_Connection 
*connection,
  * them. Generates the 200 reply.
  *
  * @param connection connection to the client
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the proposal data
  * @param h_wire hash of wire account details
  * @param coin_pub public key of the coin
  * @param coin_contribution contribution of this coin to the total amount 
transferred
@@ -348,7 +348,7 @@ TEH_RESPONSE_reply_transfer_pending (struct MHD_Connection 
*connection,
  */
 int
 TEH_RESPONSE_reply_track_transaction (struct MHD_Connection *connection,
-                                      const struct GNUNET_HashCode *h_contract,
+                                      const struct GNUNET_HashCode 
*h_proposal_data,
                                       const struct GNUNET_HashCode *h_wire,
                                       const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                       const struct TALER_Amount 
*coin_contribution,
@@ -374,9 +374,9 @@ struct TEH_TrackTransferDetail
   struct TEH_TrackTransferDetail *prev;
 
   /**
-   * Hash of the contract
+   * Hash of the proposal data.
    */
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
 
   /**
    * Merchant's transaction ID.
diff --git a/src/exchange/taler-exchange-httpd_tracking.c 
b/src/exchange/taler-exchange-httpd_tracking.c
index 04b5013..0c41a81 100644
--- a/src/exchange/taler-exchange-httpd_tracking.c
+++ b/src/exchange/taler-exchange-httpd_tracking.c
@@ -92,7 +92,7 @@ check_and_handle_track_transaction_request (struct 
MHD_Connection *connection,
                                                 "merchant_sig");
   }
   return TEH_DB_execute_track_transaction (connection,
-                                           &tps->h_contract,
+                                           &tps->h_proposal_data,
                                            &tps->h_wire,
                                            &tps->coin_pub,
                                            merchant_pub,
@@ -124,7 +124,7 @@ TEH_TRACKING_handler_track_transaction (struct 
TEH_RequestHandler *rh,
   struct TALER_MerchantSignatureP merchant_sig;
   struct GNUNET_JSON_Specification spec[] = {
     GNUNET_JSON_spec_fixed_auto ("H_wire", &tps.h_wire),
-    GNUNET_JSON_spec_fixed_auto ("H_contract", &tps.h_contract),
+    GNUNET_JSON_spec_fixed_auto ("h_proposal_data", &tps.h_proposal_data),
     GNUNET_JSON_spec_fixed_auto ("coin_pub", &tps.coin_pub),
     GNUNET_JSON_spec_uint64 ("transaction_id", &transaction_id),
     GNUNET_JSON_spec_fixed_auto ("merchant_pub", &tps.merchant),
diff --git a/src/exchange/test_taler_exchange_aggregator.c 
b/src/exchange/test_taler_exchange_aggregator.c
index cd199e0..93ecb51 100644
--- a/src/exchange/test_taler_exchange_aggregator.c
+++ b/src/exchange/test_taler_exchange_aggregator.c
@@ -419,7 +419,7 @@ do_deposit (struct Command *cmd)
   /* contract is just picked at random;
      note: we may want to write this back to 'cmd' in the future. */
   GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
-                                    &deposit.h_contract);
+                                    &deposit.h_proposal_data);
   if ( (GNUNET_OK !=
         TALER_string_to_amount (cmd->details.deposit.amount_with_fee,
                                 &deposit.amount_with_fee)) ||
diff --git a/src/exchange/test_taler_exchange_httpd.data 
b/src/exchange/test_taler_exchange_httpd.data
index 8a1d6ba..70cd010 100644
--- a/src/exchange/test_taler_exchange_httpd.data
+++ b/src/exchange/test_taler_exchange_httpd.data
@@ -39,7 +39,7 @@
 /admin/add/incoming 
{"reserve_pub":"BSEFVVNZ4C3724BPVKTJMQMD73HQREA5FWSS1C1BZ36ZFF2WBTK0","amount":"{\"currency\":\"EUR\",\"value\":5,\"fraction\":3}","execution_date":"\/Date(1436271156447)\/","wire":{"type":"test"}}
 #
 # Bogus denomination key
-/deposit 
{"f":{"currency":"EUR","value":5,"fraction":0},"H_contract":"NRT9E07FYT147V4VCDG0102P0YX0FZ11ZRG90F4X1HDV95M0J64ZVE4XQGNN9MJ3B5K3JX6TJ181KNGRYSZSTYZ5PQHBM1F9QKQ5B50","wire":{"bank":"dest
 
bank","type":"TEST","account":42},"timestamp":"/Date(1436823947)/","coin_pub":"2KCPBGZ77VGJT4DG99EZAY0GQ5TJ89DF53FWYR5RFRTK0CCXRMFG","denom_pub":"51B7ARKCD5HJTTV5F4G0M818E9SP280A40G2GVH04CR30E9S6GVK2DHM8S234C236CR32C9N8RW44E9M712KAH1R60VM2CJ16RT3GGA18RR36CA575144DJ58CTK0E9M8D2M2E9S8GTKGH1Q8S0KAC
 [...]
+/deposit 
{"f":{"currency":"EUR","value":5,"fraction":0},"h_proposal_data":"NRT9E07FYT147V4VCDG0102P0YX0FZ11ZRG90F4X1HDV95M0J64ZVE4XQGNN9MJ3B5K3JX6TJ181KNGRYSZSTYZ5PQHBM1F9QKQ5B50","wire":{"bank":"dest
 
bank","type":"TEST","account":42},"timestamp":"/Date(1436823947)/","coin_pub":"2KCPBGZ77VGJT4DG99EZAY0GQ5TJ89DF53FWYR5RFRTK0CCXRMFG","denom_pub":"51B7ARKCD5HJTTV5F4G0M818E9SP280A40G2GVH04CR30E9S6GVK2DHM8S234C236CR32C9N8RW44E9M712KAH1R60VM2CJ16RT3GGA18RR36CA575144DJ58CTK0E9M8D2M2E9S8GTKGH1Q8
 [...]
 #
 # missing coin_ev argument
 /withdraw/sign 
{"denom_pub":"51R7ARKCD5HJTTV5F4G0M818E9SP280A40G2GVH04CR30E9S6GVK2DHM8S234C236CR32C9N8RW44E9M712KAH1R60VM2CJ16RT3GGA18RR36CA575144DJ58CTK0E9M8D2M2E9S8GTKGH1Q8S0KACT174S3AD2670R4ADJ664W32C1N8N23CHA58MSK6DJ26WSMAD1P8H132CHP8GWKAG9K8RS46GJ6890M6GT28GSK4GJ66X2KCCA168RM4GA67113GDA28RR4AGA36RVK6GA460VKJDT58CVK6HA488R48E9R6D2KEH258N246HHJ850K4H9R8N0KEC9N68SM2EA48RR3JEA284SM6C9M6D130D228MSK6H1J6MSKCH1K8CR38CJ48MV36GJ38513CE9P60TM6CA56D1K8HHQ75244DA26WW4CG9M8MW3JE9M7133JGH35452081
 [...]
diff --git a/src/exchangedb/perf_taler_exchangedb_init.c 
b/src/exchangedb/perf_taler_exchangedb_init.c
index 1694dc0..41dda56 100644
--- a/src/exchangedb/perf_taler_exchangedb_init.c
+++ b/src/exchangedb/perf_taler_exchangedb_init.c
@@ -209,7 +209,7 @@ PERF_TALER_EXCHANGEDB_deposit_init (const struct 
PERF_TALER_EXCHANGEDB_Coin *coi
   struct TALER_EXCHANGEDB_Deposit *deposit;
   struct TALER_CoinSpendSignatureP csig;
   struct TALER_MerchantPublicKeyP merchant_pub;
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
   struct GNUNET_HashCode h_wire;
   const char wire[] = "{"
     "\"type\":\"SEPA\","
@@ -226,7 +226,7 @@ PERF_TALER_EXCHANGEDB_deposit_init (const struct 
PERF_TALER_EXCHANGEDB_Coin *coi
   GNUNET_assert (NULL !=
                  (deposit = GNUNET_malloc (sizeof (struct 
TALER_EXCHANGEDB_Deposit) + sizeof (wire))));
   GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
-                                    &h_contract);
+                                    &h_proposal_data);
   GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
                                     &h_wire);
   { //csig
@@ -234,10 +234,10 @@ PERF_TALER_EXCHANGEDB_deposit_init (const struct 
PERF_TALER_EXCHANGEDB_Coin *coi
     {
       struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
       struct GNUNET_HashCode h_wire;
-      struct GNUNET_HashCode h_contract;
+      struct GNUNET_HashCode h_proposal_data;
     } unsigned_data;
 
-    unsigned_data.h_contract = h_contract;
+    unsigned_data.h_proposal_data = h_proposal_data;
     unsigned_data.h_wire = h_wire;
     unsigned_data.purpose.size = htonl (sizeof (struct u32_presign));
     unsigned_data.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST);
@@ -274,7 +274,7 @@ PERF_TALER_EXCHANGEDB_deposit_init (const struct 
PERF_TALER_EXCHANGEDB_Coin *coi
     GNUNET_assert (NULL != coin->public_info.denom_sig.rsa_signature);
   }
   deposit->csig = csig;
-  deposit->h_contract = h_contract;
+  deposit->h_proposal_data = h_proposal_data;
   deposit->h_wire = h_wire;
   deposit->receiver_wire_account = json_loads (wire, 0, NULL);
   deposit->transaction_id = transaction_id++;
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index a41dc4e..69a1cae 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -435,7 +435,7 @@ postgres_create_tables (void *cls)
           ",refund_deadline INT8 NOT NULL"
           ",wire_deadline INT8 NOT NULL"
           ",merchant_pub BYTEA NOT NULL CHECK (LENGTH(merchant_pub)=32)"
-          ",h_contract BYTEA NOT NULL CHECK (LENGTH(h_contract)=64)"
+          ",h_proposal_data BYTEA NOT NULL CHECK (LENGTH(h_proposal_data)=64)"
           ",h_wire BYTEA NOT NULL CHECK (LENGTH(h_wire)=64)"
           ",coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)"
           ",wire TEXT NOT NULL"
@@ -454,7 +454,7 @@ postgres_create_tables (void *cls)
          ",coin_pub BYTEA NOT NULL REFERENCES known_coins (coin_pub) ON DELETE 
CASCADE"
           ",merchant_pub BYTEA NOT NULL CHECK(LENGTH(merchant_pub)=32)"
           ",merchant_sig BYTEA NOT NULL CHECK(LENGTH(merchant_sig)=64)"
-          ",h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)"
+          ",h_proposal_data BYTEA NOT NULL CHECK(LENGTH(h_proposal_data)=64)"
           ",transaction_id INT8 NOT NULL"
           ",rtransaction_id INT8 NOT NULL"
           ",amount_with_fee_val INT8 NOT NULL"
@@ -862,7 +862,7 @@ postgres_prepare (PGconn *db_conn)
            "SELECT"
            " merchant_pub"
            ",merchant_sig"
-           ",h_contract"
+           ",h_proposal_data"
            ",transaction_id"
            ",rtransaction_id"
            ",coin_pub"
@@ -880,7 +880,7 @@ postgres_prepare (PGconn *db_conn)
            "SELECT"
            " merchant_pub"
            ",merchant_sig"
-           ",h_contract"
+           ",h_proposal_data"
            ",transaction_id"
            ",rtransaction_id"
            ",amount_with_fee_val"
@@ -950,7 +950,7 @@ postgres_prepare (PGconn *db_conn)
            ",refund_deadline"
            ",wire_deadline"
            ",merchant_pub"
-           ",h_contract"
+           ",h_proposal_data"
            ",h_wire"
            ",coin_sig"
            ",wire"
@@ -965,7 +965,7 @@ postgres_prepare (PGconn *db_conn)
            "(coin_pub "
            ",merchant_pub "
            ",merchant_sig "
-           ",h_contract "
+           ",h_proposal_data "
            ",transaction_id "
            ",rtransaction_id "
            ",amount_with_fee_val "
@@ -985,7 +985,7 @@ postgres_prepare (PGconn *db_conn)
            ",timestamp"
            ",refund_deadline"
            ",wire_deadline"
-           ",h_contract"
+           ",h_proposal_data"
            ",h_wire"
            " FROM deposits"
            " WHERE ("
@@ -1008,7 +1008,7 @@ postgres_prepare (PGconn *db_conn)
           ",transaction_id"
            ",refund_deadline"
            ",wire_deadline"
-           ",h_contract"
+           ",h_proposal_data"
            ",wire"
            ",done"
            ",deposit_serial_id"
@@ -1037,7 +1037,7 @@ postgres_prepare (PGconn *db_conn)
            "  (coin_pub=$1) AND"
            "  (transaction_id=$2) AND"
            "  (merchant_pub=$3) AND"
-           "  (h_contract=$4) AND"
+           "  (h_proposal_data=$4) AND"
            "  (h_wire=$5)"
            " )",
            5, NULL);
@@ -1054,7 +1054,7 @@ postgres_prepare (PGconn *db_conn)
            ",denom.fee_deposit_curr"
            ",wire_deadline"
            ",transaction_id"
-           ",h_contract"
+           ",h_proposal_data"
            ",wire"
            ",merchant_pub"
            ",coin_pub"
@@ -1082,7 +1082,7 @@ postgres_prepare (PGconn *db_conn)
            ",denom.fee_deposit_curr"
            ",wire_deadline"
            ",transaction_id"
-           ",h_contract"
+           ",h_proposal_data"
            ",coin_pub"
            " FROM deposits"
            "    JOIN known_coins USING (coin_pub)"
@@ -1116,7 +1116,7 @@ postgres_prepare (PGconn *db_conn)
            " WHERE coin_pub=$1"
            " AND transaction_id=$2"
            " AND merchant_pub=$3"
-           " AND h_contract=$4"
+           " AND h_proposal_data=$4"
            " AND h_wire=$5",
            5, NULL);
 
@@ -1134,7 +1134,7 @@ postgres_prepare (PGconn *db_conn)
            ",timestamp"
            ",refund_deadline"
            ",merchant_pub"
-           ",h_contract"
+           ",h_proposal_data"
            ",h_wire"
            ",wire"
            ",coin_sig"
@@ -1204,7 +1204,7 @@ postgres_prepare (PGconn *db_conn)
   /* Used in #postgres_lookup_wire_transfer */
   PREPARE ("lookup_transactions",
            "SELECT"
-           " deposits.h_contract"
+           " deposits.h_proposal_data"
            ",deposits.h_wire"
            ",deposits.coin_pub"
            ",deposits.merchant_pub"
@@ -1239,7 +1239,7 @@ postgres_prepare (PGconn *db_conn)
            "    JOIN known_coins USING (coin_pub)"
            "    JOIN denominations denom USING (denom_pub)"
            " WHERE coin_pub=$1"
-           "  AND h_contract=$2"
+           "  AND h_proposal_data=$2"
            "  AND h_wire=$3"
            "  AND transaction_id=$4"
            "  AND merchant_pub=$5",
@@ -2264,8 +2264,8 @@ postgres_have_deposit (void *cls,
                                           &deposit2.refund_deadline),
       GNUNET_PQ_result_spec_absolute_time ("wire_deadline",
                                           &deposit2.wire_deadline),
-      GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                           &deposit2.h_contract),
+      GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                           &deposit2.h_proposal_data),
       GNUNET_PQ_result_spec_auto_from_type ("h_wire",
                                            &deposit2.h_wire),
       GNUNET_PQ_result_spec_end
@@ -2285,8 +2285,8 @@ postgres_have_deposit (void *cls,
           deposit2.timestamp.abs_value_us) ||
          (deposit->refund_deadline.abs_value_us !=
           deposit2.refund_deadline.abs_value_us) ||
-         (0 != memcmp (&deposit->h_contract,
-                       &deposit2.h_contract,
+         (0 != memcmp (&deposit->h_proposal_data,
+                       &deposit2.h_proposal_data,
                        sizeof (struct GNUNET_HashCode))) ||
          (0 != memcmp (&deposit->h_wire,
                        &deposit2.h_wire,
@@ -2360,7 +2360,7 @@ postgres_test_deposit_done (void *cls,
     GNUNET_PQ_query_param_auto_from_type (&deposit->coin.coin_pub),
     GNUNET_PQ_query_param_uint64 (&deposit->transaction_id),
     GNUNET_PQ_query_param_auto_from_type (&deposit->merchant_pub),
-    GNUNET_PQ_query_param_auto_from_type (&deposit->h_contract),
+    GNUNET_PQ_query_param_auto_from_type (&deposit->h_proposal_data),
     GNUNET_PQ_query_param_auto_from_type (&deposit->h_wire),
     GNUNET_PQ_query_param_end
   };
@@ -2494,7 +2494,7 @@ postgres_get_ready_deposit (void *cls,
     struct TALER_Amount amount_with_fee;
     struct TALER_Amount deposit_fee;
     struct GNUNET_TIME_Absolute wire_deadline;
-    struct GNUNET_HashCode h_contract;
+    struct GNUNET_HashCode h_proposal_data;
     struct TALER_MerchantPublicKeyP merchant_pub;
     struct TALER_CoinSpendPublicKeyP coin_pub;
     uint64_t transaction_id;
@@ -2511,8 +2511,8 @@ postgres_get_ready_deposit (void *cls,
                                    &deposit_fee),
       GNUNET_PQ_result_spec_absolute_time ("wire_deadline",
                                           &wire_deadline),
-      GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                           &h_contract),
+      GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                           &h_proposal_data),
       GNUNET_PQ_result_spec_auto_from_type ("merchant_pub",
                                            &merchant_pub),
       GNUNET_PQ_result_spec_auto_from_type ("coin_pub",
@@ -2538,7 +2538,7 @@ postgres_get_ready_deposit (void *cls,
                       &amount_with_fee,
                       &deposit_fee,
                       transaction_id,
-                      &h_contract,
+                      &h_proposal_data,
                       wire_deadline,
                       wire);
     GNUNET_PQ_cleanup_result (rs);
@@ -2602,7 +2602,7 @@ postgres_iterate_matching_deposits (void *cls,
     struct TALER_Amount amount_with_fee;
     struct TALER_Amount deposit_fee;
     struct GNUNET_TIME_Absolute wire_deadline;
-    struct GNUNET_HashCode h_contract;
+    struct GNUNET_HashCode h_proposal_data;
     struct TALER_CoinSpendPublicKeyP coin_pub;
     uint64_t transaction_id;
     uint64_t serial_id;
@@ -2618,8 +2618,8 @@ postgres_iterate_matching_deposits (void *cls,
                                    &deposit_fee),
       GNUNET_PQ_result_spec_absolute_time ("wire_deadline",
                                            &wire_deadline),
-      GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                            &h_contract),
+      GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                            &h_proposal_data),
       GNUNET_PQ_result_spec_auto_from_type ("coin_pub",
                                             &coin_pub),
       GNUNET_PQ_result_spec_end
@@ -2640,7 +2640,7 @@ postgres_iterate_matching_deposits (void *cls,
                       &amount_with_fee,
                       &deposit_fee,
                       transaction_id,
-                      &h_contract,
+                      &h_proposal_data,
                       wire_deadline,
                       NULL);
     GNUNET_PQ_cleanup_result (rs);
@@ -2780,7 +2780,7 @@ postgres_insert_deposit (void *cls,
     GNUNET_PQ_query_param_absolute_time (&deposit->refund_deadline),
     GNUNET_PQ_query_param_absolute_time (&deposit->wire_deadline),
     GNUNET_PQ_query_param_auto_from_type (&deposit->merchant_pub),
-    GNUNET_PQ_query_param_auto_from_type (&deposit->h_contract),
+    GNUNET_PQ_query_param_auto_from_type (&deposit->h_proposal_data),
     GNUNET_PQ_query_param_auto_from_type (&deposit->h_wire),
     GNUNET_PQ_query_param_auto_from_type (&deposit->csig),
     TALER_PQ_query_param_json (deposit->receiver_wire_account),
@@ -2845,7 +2845,7 @@ postgres_insert_refund (void *cls,
     GNUNET_PQ_query_param_auto_from_type (&refund->coin.coin_pub),
     GNUNET_PQ_query_param_auto_from_type (&refund->merchant_pub),
     GNUNET_PQ_query_param_auto_from_type (&refund->merchant_sig),
-    GNUNET_PQ_query_param_auto_from_type (&refund->h_contract),
+    GNUNET_PQ_query_param_auto_from_type (&refund->h_proposal_data),
     GNUNET_PQ_query_param_uint64 (&refund->transaction_id),
     GNUNET_PQ_query_param_uint64 (&refund->rtransaction_id),
     TALER_PQ_query_param_amount (&refund->refund_amount),
@@ -3756,8 +3756,8 @@ postgres_get_coin_transactions (void *cls,
                                                &deposit->refund_deadline),
           GNUNET_PQ_result_spec_auto_from_type ("merchant_pub",
                                                 &deposit->merchant_pub),
-          GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                                &deposit->h_contract),
+          GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                                &deposit->h_proposal_data),
           GNUNET_PQ_result_spec_auto_from_type ("h_wire",
                                                 &deposit->h_wire),
           TALER_PQ_result_spec_json ("wire",
@@ -3902,8 +3902,8 @@ postgres_get_coin_transactions (void *cls,
                                                 &refund->merchant_pub),
           GNUNET_PQ_result_spec_auto_from_type ("merchant_sig",
                                                 &refund->merchant_sig),
-          GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                                &refund->h_contract),
+          GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                                &refund->h_proposal_data),
           GNUNET_PQ_result_spec_uint64 ("transaction_id",
                                         &refund->transaction_id),
           GNUNET_PQ_result_spec_uint64 ("rtransaction_id",
@@ -4002,7 +4002,7 @@ postgres_lookup_wire_transfer (void *cls,
   }
   for (i=0;i<nrows;i++)
   {
-    struct GNUNET_HashCode h_contract;
+    struct GNUNET_HashCode h_proposal_data;
     struct GNUNET_HashCode h_wire;
     struct TALER_CoinSpendPublicKeyP coin_pub;
     struct TALER_MerchantPublicKeyP merchant_pub;
@@ -4011,7 +4011,7 @@ postgres_lookup_wire_transfer (void *cls,
     struct TALER_Amount amount_with_fee;
     struct TALER_Amount deposit_fee;
     struct GNUNET_PQ_ResultSpec rs[] = {
-      GNUNET_PQ_result_spec_auto_from_type ("h_contract", &h_contract),
+      GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data", 
&h_proposal_data),
       GNUNET_PQ_result_spec_auto_from_type ("h_wire", &h_wire),
       GNUNET_PQ_result_spec_auto_from_type ("coin_pub", &coin_pub),
       GNUNET_PQ_result_spec_auto_from_type ("merchant_pub", &merchant_pub),
@@ -4034,7 +4034,7 @@ postgres_lookup_wire_transfer (void *cls,
         &merchant_pub,
         &h_wire,
         exec_time,
-        &h_contract,
+        &h_proposal_data,
         transaction_id,
         &coin_pub,
         &amount_with_fee,
@@ -4052,7 +4052,7 @@ postgres_lookup_wire_transfer (void *cls,
  *
  * @param cls closure
  * @param session database connection
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the proposal data
  * @param h_wire hash of merchant wire details
  * @param coin_pub public key of deposited coin
  * @param merchant_pub merchant public key
@@ -4065,7 +4065,7 @@ postgres_lookup_wire_transfer (void *cls,
 static int
 postgres_wire_lookup_deposit_wtid (void *cls,
                                    struct TALER_EXCHANGEDB_Session *session,
-                                  const struct GNUNET_HashCode *h_contract,
+                                  const struct GNUNET_HashCode 
*h_proposal_data,
                                   const struct GNUNET_HashCode *h_wire,
                                   const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                   const struct TALER_MerchantPublicKeyP 
*merchant_pub,
@@ -4076,7 +4076,7 @@ postgres_wire_lookup_deposit_wtid (void *cls,
   PGresult *result;
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_auto_from_type (coin_pub),
-    GNUNET_PQ_query_param_auto_from_type (h_contract),
+    GNUNET_PQ_query_param_auto_from_type (h_proposal_data),
     GNUNET_PQ_query_param_auto_from_type (h_wire),
     GNUNET_PQ_query_param_uint64 (&transaction_id),
     GNUNET_PQ_query_param_auto_from_type (merchant_pub),
@@ -4109,7 +4109,7 @@ postgres_wire_lookup_deposit_wtid (void *cls,
         GNUNET_PQ_query_param_auto_from_type (coin_pub),
         GNUNET_PQ_query_param_uint64 (&transaction_id),
         GNUNET_PQ_query_param_auto_from_type (merchant_pub),
-        GNUNET_PQ_query_param_auto_from_type (h_contract),
+        GNUNET_PQ_query_param_auto_from_type (h_proposal_data),
         GNUNET_PQ_query_param_auto_from_type (h_wire),
         GNUNET_PQ_query_param_end
       };
@@ -4538,8 +4538,8 @@ postgres_select_deposits_above_serial_id (void *cls,
                                            &deposit.refund_deadline),
       GNUNET_PQ_result_spec_absolute_time ("wire_deadline",
                                            &deposit.wire_deadline),
-      GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                           &deposit.h_contract),
+      GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                           &deposit.h_proposal_data),
       TALER_PQ_result_spec_json ("wire",
                                  &deposit.receiver_wire_account),
       GNUNET_PQ_result_spec_auto_from_type ("done",
@@ -4564,7 +4564,7 @@ postgres_select_deposits_above_serial_id (void *cls,
         &deposit.csig,
         &deposit.amount_with_fee,
         deposit.transaction_id,
-        &deposit.h_contract,
+        &deposit.h_proposal_data,
         deposit.refund_deadline,
         deposit.wire_deadline,
         deposit.receiver_wire_account,
@@ -4723,8 +4723,8 @@ postgres_select_refunds_above_serial_id (void *cls,
                                             &refund.merchant_pub),
       GNUNET_PQ_result_spec_auto_from_type ("merchant_sig",
                                            &refund.merchant_sig),
-      GNUNET_PQ_result_spec_auto_from_type ("h_contract",
-                                           &refund.h_contract),
+      GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data",
+                                           &refund.h_proposal_data),
       GNUNET_PQ_result_spec_uint64 ("transaction_id",
                                     &refund.transaction_id),
       GNUNET_PQ_result_spec_uint64 ("rtransaction_id",
@@ -4751,7 +4751,7 @@ postgres_select_refunds_above_serial_id (void *cls,
         &refund.coin.coin_pub,
         &refund.merchant_pub,
         &refund.merchant_sig,
-        &refund.h_contract,
+        &refund.h_proposal_data,
         refund.transaction_id,
         refund.rtransaction_id,
         &refund.refund_amount);
diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c
index bc46a8f..3d82436 100644
--- a/src/exchangedb/test_exchangedb.c
+++ b/src/exchangedb/test_exchangedb.c
@@ -513,7 +513,7 @@ check_transfer_data (void *cls,
  * @param coin_sig signature from the coin
  * @param amount_with_fee amount that was deposited including fee
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param refund_deadline by which the merchant adviced that he might want
  *        to get a refund
  * @param wire_deadline by which the merchant adviced that he would like the
@@ -786,7 +786,7 @@ cb_wt_never (void *cls,
              const struct TALER_MerchantPublicKeyP *merchant_pub,
              const struct GNUNET_HashCode *h_wire,
              struct GNUNET_TIME_Absolute exec_time,
-             const struct GNUNET_HashCode *h_contract,
+             const struct GNUNET_HashCode *h_proposal_data,
              uint64_t transaction_id,
              const struct TALER_CoinSpendPublicKeyP *coin_pub,
              const struct TALER_Amount *coin_value,
@@ -812,7 +812,7 @@ cb_wtid_never (void *cls,
 
 static struct TALER_MerchantPublicKeyP merchant_pub_wt;
 static struct GNUNET_HashCode h_wire_wt;
-static struct GNUNET_HashCode h_contract_wt;
+static struct GNUNET_HashCode h_proposal_data_wt;
 static uint64_t transaction_id_wt;
 static struct TALER_CoinSpendPublicKeyP coin_pub_wt;
 static struct TALER_Amount coin_value_wt;
@@ -830,7 +830,7 @@ cb_wt_check (void *cls,
              const struct TALER_MerchantPublicKeyP *merchant_pub,
              const struct GNUNET_HashCode *h_wire,
              struct GNUNET_TIME_Absolute exec_time,
-             const struct GNUNET_HashCode *h_contract,
+             const struct GNUNET_HashCode *h_proposal_data,
              uint64_t transaction_id,
              const struct TALER_CoinSpendPublicKeyP *coin_pub,
              const struct TALER_Amount *coin_value,
@@ -844,8 +844,8 @@ cb_wt_check (void *cls,
                               &h_wire_wt,
                               sizeof (struct GNUNET_HashCode)));
   GNUNET_assert (exec_time.abs_value_us == execution_time_wt.abs_value_us);
-  GNUNET_assert (0 == memcmp (h_contract,
-                              &h_contract_wt,
+  GNUNET_assert (0 == memcmp (h_proposal_data,
+                              &h_proposal_data_wt,
                               sizeof (struct GNUNET_HashCode)));
   GNUNET_assert (transaction_id == transaction_id_wt);
   GNUNET_assert (0 == memcmp (coin_pub,
@@ -900,7 +900,7 @@ static uint64_t deposit_rowid;
  * @param amount_with_fee amount that was deposited including fee
  * @param deposit_fee amount the exchange gets to keep as transaction fees
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param wire_deadline by which the merchant adviced that he would like the
  *        wire transfer to be executed
  * @param wire wire details for the merchant, NULL from 
iterate_matching_deposits()
@@ -915,7 +915,7 @@ deposit_cb (void *cls,
             const struct TALER_Amount *amount_with_fee,
             const struct TALER_Amount *deposit_fee,
             uint64_t transaction_id,
-            const struct GNUNET_HashCode *h_contract,
+            const struct GNUNET_HashCode *h_proposal_data,
             struct GNUNET_TIME_Absolute wire_deadline,
             const json_t *wire)
 {
@@ -932,8 +932,8 @@ deposit_cb (void *cls,
                                &deposit->amount_with_fee)) ||
        (0 != TALER_amount_cmp (deposit_fee,
                                &deposit->deposit_fee)) ||
-       (0 != memcmp (h_contract,
-                     &deposit->h_contract,
+       (0 != memcmp (h_proposal_data,
+                     &deposit->h_proposal_data,
                      sizeof (struct GNUNET_HashCode))) ||
        (0 != memcmp (coin_pub,
                      &deposit->coin.coin_pub,
@@ -961,7 +961,7 @@ deposit_cb (void *cls,
  * @param coin_sig signature from the coin
  * @param amount_with_fee amount that was deposited including fee
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param refund_deadline by which the merchant adviced that he might want
  *        to get a refund
  * @param wire_deadline by which the merchant adviced that he would like the
@@ -978,7 +978,7 @@ audit_deposit_cb (void *cls,
                   const struct TALER_CoinSpendSignatureP *coin_sig,
                   const struct TALER_Amount *amount_with_fee,
                   uint64_t transaction_id,
-                  const struct GNUNET_HashCode *h_contract,
+                  const struct GNUNET_HashCode *h_proposal_data,
                   struct GNUNET_TIME_Absolute refund_deadline,
                   struct GNUNET_TIME_Absolute wire_deadline,
                   const json_t *receiver_wire_account,
@@ -998,7 +998,8 @@ audit_deposit_cb (void *cls,
  * @param coin_pub public key of the coin
  * @param merchant_pub public key of the merchant
  * @param merchant_sig signature of the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data in
+ *                        the contract between merchant and customer
  * @param transaction_id original transaction ID chosen by the merchant
  * @param rtransaction_id refund transaction ID chosen by the merchant
  * @param amount_with_fee amount that was deposited including fee
@@ -1010,7 +1011,7 @@ audit_refund_cb (void *cls,
                  const struct TALER_CoinSpendPublicKeyP *coin_pub,
                  const struct TALER_MerchantPublicKeyP *merchant_pub,
                  const struct TALER_MerchantSignatureP *merchant_sig,
-                 const struct GNUNET_HashCode *h_contract,
+                 const struct GNUNET_HashCode *h_proposal_data,
                  uint64_t transaction_id,
                  uint64_t rtransaction_id,
                  const struct TALER_Amount *amount_with_fee)
@@ -1342,7 +1343,7 @@ run (void *cls)
   deposit.coin.denom_sig = cbc.sig;
   RND_BLK (&deposit.csig);
   RND_BLK (&deposit.merchant_pub);
-  RND_BLK (&deposit.h_contract);
+  RND_BLK (&deposit.h_proposal_data);
   wire = json_loads (json_wire_str, 0, NULL);
   TALER_JSON_hash (wire,
                    &deposit.h_wire);
@@ -1445,7 +1446,7 @@ run (void *cls)
   refund.coin = deposit.coin;
   refund.merchant_pub = deposit.merchant_pub;
   RND_BLK (&refund.merchant_sig);
-  refund.h_contract = deposit.h_contract;
+  refund.h_proposal_data = deposit.h_proposal_data;
   refund.transaction_id = deposit.transaction_id;
   refund.rtransaction_id = GNUNET_CRYPTO_random_u64 
(GNUNET_CRYPTO_QUALITY_WEAK, UINT64_MAX);
   refund.refund_amount = deposit.amount_with_fee;
@@ -1488,8 +1489,8 @@ run (void *cls)
         FAILIF (0 != memcmp (&have->merchant_pub,
                              &deposit.merchant_pub,
                              sizeof (struct TALER_MerchantPublicKeyP)));
-        FAILIF (0 != memcmp (&have->h_contract,
-                             &deposit.h_contract,
+        FAILIF (0 != memcmp (&have->h_proposal_data,
+                             &deposit.h_proposal_data,
                              sizeof (struct GNUNET_HashCode)));
         FAILIF (0 != memcmp (&have->h_wire,
                              &deposit.h_wire,
@@ -1531,8 +1532,8 @@ run (void *cls)
         FAILIF (0 != memcmp (&have->merchant_sig,
                              &refund.merchant_sig,
                              sizeof (struct TALER_MerchantSignatureP)));
-        FAILIF (0 != memcmp (&have->h_contract,
-                             &refund.h_contract,
+        FAILIF (0 != memcmp (&have->h_proposal_data,
+                             &refund.h_proposal_data,
                              sizeof (struct GNUNET_HashCode)));
         FAILIF (have->transaction_id != refund.transaction_id);
         FAILIF (have->rtransaction_id != refund.rtransaction_id);
@@ -1559,7 +1560,7 @@ run (void *cls)
   memset (&wtid, 42, sizeof (wtid));
   merchant_pub_wt = deposit.merchant_pub;
   h_wire_wt = deposit.h_wire;
-  h_contract_wt = deposit.h_contract;
+  h_proposal_data_wt = deposit.h_proposal_data;
   coin_pub_wt = deposit.coin.coin_pub;
   transaction_id_wt = deposit.transaction_id;
   execution_time_wt = GNUNET_TIME_absolute_get ();
@@ -1578,7 +1579,7 @@ run (void *cls)
   FAILIF (GNUNET_NO !=
           plugin->wire_lookup_deposit_wtid (plugin->cls,
                                             session,
-                                            &h_contract_wt,
+                                            &h_proposal_data_wt,
                                             &h_wire_wt,
                                             &coin_pub_wt,
                                             &merchant_pub_wt,
@@ -1601,7 +1602,7 @@ run (void *cls)
   FAILIF (GNUNET_OK !=
           plugin->wire_lookup_deposit_wtid (plugin->cls,
                                             session,
-                                            &h_contract_wt,
+                                            &h_proposal_data_wt,
                                             &h_wire_wt,
                                             &coin_pub_wt,
                                             &merchant_pub_wt,
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index 269c1c6..ecdb2e3 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -361,9 +361,9 @@ struct TALER_CoinPublicInfo
 struct TALER_TrackTransferDetails
 {
   /**
-   * Hash of the contract.
+   * Hash of the proposal data.
    */
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
 
   /**
    * Which coin was deposited?
diff --git a/src/include/taler_error_codes.h b/src/include/taler_error_codes.h
index b0e3373..7a0d934 100644
--- a/src/include/taler_error_codes.h
+++ b/src/include/taler_error_codes.h
@@ -343,7 +343,7 @@ enum TALER_ErrorCode
 
   /**
    * The hash of the given wire address does not match the hash
-   * specified in the contract.
+   * specified in the proposal data.
    * This response is provided
    * with HTTP status code MHD_HTTP_BAD_REQUEST.
    */
diff --git a/src/include/taler_exchange_service.h 
b/src/include/taler_exchange_service.h
index e368f95..2133e57 100644
--- a/src/include/taler_exchange_service.h
+++ b/src/include/taler_exchange_service.h
@@ -451,7 +451,7 @@ typedef void
  * @param wire_deadline execution date, until which the merchant would like 
the exchange to settle the balance (advisory, the exchange cannot be
  *        forced to settle in the past or upon very short notice, but of 
course a well-behaved exchange will limit aggregation based on the advice 
received)
  * @param wire_details the merchant’s account details, in a format supported 
by the exchange
- * @param h_contract hash of the contact of the merchant with the customer 
(further details are never disclosed to the exchange)
+ * @param h_proposal_data hash of the contact of the merchant with the 
customer (further details are never disclosed to the exchange)
  * @param coin_pub coin’s public key
  * @param denom_pub denomination key with which the coin is signed
  * @param denom_sig exchange’s unblinded signature of the coin
@@ -470,7 +470,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle 
*exchange,
                         const struct TALER_Amount *amount,
                         struct GNUNET_TIME_Absolute wire_deadline,
                         json_t *wire_details,
-                        const struct GNUNET_HashCode *h_contract,
+                        const struct GNUNET_HashCode *h_proposal_data,
                         const struct TALER_CoinSpendPublicKeyP *coin_pub,
                         const struct TALER_DenominationSignature *denom_sig,
                         const struct TALER_DenominationPublicKey *denom_pub,
@@ -539,8 +539,8 @@ typedef void
  *        (as that fee is still being subtracted), and smaller than the amount
  *        (with deposit fee) of the original deposit contribution of this coin
  * @param refund_fee fee applicable to this coin for the refund
- * @param h_contract hash of the contact of the merchant with the customer 
that is being refunded
- * @param transaction_id transaction id for the transaction being refunded, 
must match @a h_contract
+ * @param h_proposal_data hash of the contact of the merchant with the 
customer that is being refunded
+ * @param transaction_id transaction id for the transaction being refunded, 
must match @a h_proposal_data
  * @param coin_pub coin’s public key of the coin from the original deposit 
operation
  * @param rtransaction_id transaction id for the transaction between merchant 
and customer (of refunding operation);
  *                        this is needed as we may first do a partial refund 
and later a full refund.  If both
@@ -556,7 +556,7 @@ struct TALER_EXCHANGE_RefundHandle *
 TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange,
                       const struct TALER_Amount *amount,
                       const struct TALER_Amount *refund_fee,
-                      const struct GNUNET_HashCode *h_contract,
+                      const struct GNUNET_HashCode *h_proposal_data,
                       uint64_t transaction_id,
                       const struct TALER_CoinSpendPublicKeyP *coin_pub,
                       uint64_t rtransaction_id,
@@ -1217,7 +1217,7 @@ typedef void
  * @param exchange the exchange to query
  * @param merchant_priv the merchant's private key
  * @param h_wire hash of merchant's wire transfer details
- * @param h_contract hash of the contract
+ * @param h_proposal_data hash of the proposal data
  * @param coin_pub public key of the coin
  * @param transaction_id transaction identifier
  * @param cb function to call with the result
@@ -1228,7 +1228,7 @@ struct TALER_EXCHANGE_TrackTransactionHandle *
 TALER_EXCHANGE_track_transaction (struct TALER_EXCHANGE_Handle *exchange,
                                   const struct TALER_MerchantPrivateKeyP 
*merchant_priv,
                                   const struct GNUNET_HashCode *h_wire,
-                                  const struct GNUNET_HashCode *h_contract,
+                                  const struct GNUNET_HashCode 
*h_proposal_data,
                                   const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                   uint64_t transaction_id,
                                   TALER_EXCHANGE_TrackTransactionCallback cb,
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 19fb1d0..779c989 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -223,8 +223,8 @@ struct TALER_EXCHANGEDB_Deposit
   /**
    * ECDSA signature affirming that the customer intends
    * this coin to be deposited at the merchant identified
-   * by @e h_wire in relation to the contract identified
-   * by @e h_contract.
+   * by @e h_wire in relation to the proposal data identified
+   * by @e h_proposal_data.
    */
   struct TALER_CoinSpendSignatureP csig;
 
@@ -235,10 +235,10 @@ struct TALER_EXCHANGEDB_Deposit
   struct TALER_MerchantPublicKeyP merchant_pub;
 
   /**
-   * Hash over the contract between merchant and customer
+   * Hash over the proposa data between merchant and customer
    * (remains unknown to the Exchange).
    */
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
 
   /**
    * Hash of the (canonical) representation of @e wire, used
@@ -332,10 +332,10 @@ struct TALER_EXCHANGEDB_Refund
   struct TALER_MerchantSignatureP merchant_sig;
 
   /**
-   * Hash over the contract between merchant and customer
+   * Hash over the proposal data between merchant and customer
    * (remains unknown to the Exchange).
    */
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
 
   /**
    * Merchant-generated transaction ID to detect duplicate
@@ -563,7 +563,7 @@ struct TALER_EXCHANGEDB_Session;
  * @param amount_with_fee amount that was deposited including fee
  * @param deposit_fee amount the exchange gets to keep as transaction fees
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param wire_deadline by which the merchant adviced that he would like the
  *        wire transfer to be executed
  * @param receiver_wire_account wire details for the merchant, NULL from 
iterate_matching_deposits()
@@ -577,7 +577,7 @@ typedef int
                                     const struct TALER_Amount *amount_with_fee,
                                     const struct TALER_Amount *deposit_fee,
                                     uint64_t transaction_id,
-                                    const struct GNUNET_HashCode *h_contract,
+                                    const struct GNUNET_HashCode 
*h_proposal_data,
                                     struct GNUNET_TIME_Absolute wire_deadline,
                                     const json_t *receiver_wire_account);
 
@@ -610,7 +610,7 @@ typedef void
  * @param coin_sig signature from the coin
  * @param amount_with_fee amount that was deposited including fee
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param refund_deadline by which the merchant adviced that he might want
  *        to get a refund
  * @param wire_deadline by which the merchant adviced that he would like the
@@ -627,7 +627,7 @@ typedef int
                                     const struct TALER_CoinSpendSignatureP 
*coin_sig,
                                     const struct TALER_Amount *amount_with_fee,
                                     uint64_t transaction_id,
-                                    const struct GNUNET_HashCode *h_contract,
+                                    const struct GNUNET_HashCode 
*h_proposal_data,
                                     struct GNUNET_TIME_Absolute 
refund_deadline,
                                     struct GNUNET_TIME_Absolute wire_deadline,
                                     const json_t *receiver_wire_account,
@@ -645,7 +645,7 @@ typedef int
  * @param coin_sig signature from the coin
  * @param amount_with_fee amount that was deposited including fee
  * @param transaction_id unique transaction ID chosen by the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param refund_deadline by which the merchant adviced that he might want
  *        to get a refund
  * @param wire_deadline by which the merchant adviced that he would like the
@@ -673,7 +673,7 @@ typedef int
  * @param coin_pub public key of the coin
  * @param merchant_pub public key of the merchant
  * @param merchant_sig signature of the merchant
- * @param h_contract hash of the contract between merchant and customer
+ * @param h_proposal_data hash of the proposal data known to merchant and 
customer
  * @param transaction_id original transaction ID chosen by the merchant
  * @param rtransaction_id refund transaction ID chosen by the merchant
  * @param amount_with_fee amount that was deposited including fee
@@ -685,7 +685,7 @@ typedef int
                                    const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                    const struct TALER_MerchantPublicKeyP 
*merchant_pub,
                                    const struct TALER_MerchantSignatureP 
*merchant_sig,
-                                   const struct GNUNET_HashCode *h_contract,
+                                   const struct GNUNET_HashCode 
*h_proposal_data,
                                    uint64_t transaction_id,
                                    uint64_t rtransaction_id,
                                    const struct TALER_Amount *amount_with_fee);
@@ -784,7 +784,7 @@ typedef void
  * @param merchant_pub public key of the merchant (should be same for all 
callbacks with the same @e cls)
  * @param h_wire hash of wire transfer details of the merchant (should be same 
for all callbacks with the same @e cls)
  * @param exec_time execution time of the wire transfer (should be same for 
all callbacks with the same @e cls)
- * @param h_contract which contract was this payment about
+ * @param h_proposal_data which proposal was this payment about
  * @param transaction_id merchant's transaction ID for the payment
  * @param coin_pub which public key was this payment about
  * @param coin_value amount contributed by this coin in total (with fee)
@@ -795,7 +795,7 @@ typedef void
                                              const struct 
TALER_MerchantPublicKeyP *merchant_pub,
                                              const struct GNUNET_HashCode 
*h_wire,
                                              struct GNUNET_TIME_Absolute 
exec_time,
-                                             const struct GNUNET_HashCode 
*h_contract,
+                                             const struct GNUNET_HashCode 
*h_proposal_data,
                                              uint64_t transaction_id,
                                              const struct 
TALER_CoinSpendPublicKeyP *coin_pub,
                                              const struct TALER_Amount 
*coin_value,
@@ -1504,7 +1504,7 @@ struct TALER_EXCHANGEDB_Plugin
    *
    * @param cls closure
    * @param session database connection
-   * @param h_contract hash of the contract
+   * @param h_proposal_data hash of the proposal data
    * @param h_wire hash of merchant wire details
    * @param coin_pub public key of deposited coin
    * @param merchant_pub merchant public key
@@ -1517,7 +1517,7 @@ struct TALER_EXCHANGEDB_Plugin
   int
   (*wire_lookup_deposit_wtid)(void *cls,
                               struct TALER_EXCHANGEDB_Session *session,
-                             const struct GNUNET_HashCode *h_contract,
+                             const struct GNUNET_HashCode *h_proposal_data,
                              const struct GNUNET_HashCode *h_wire,
                              const struct TALER_CoinSpendPublicKeyP *coin_pub,
                              const struct TALER_MerchantPublicKeyP 
*merchant_pub,
diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h
index cf05d65..3740eb2 100644
--- a/src/include/taler_signatures.h
+++ b/src/include/taler_signatures.h
@@ -266,7 +266,7 @@ struct TALER_DepositRequestPS
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract GNUNET_PACKED;
+  struct GNUNET_HashCode h_proposal_data GNUNET_PACKED;
 
   /**
    * Hash over the wiring information of the merchant.
@@ -301,7 +301,7 @@ struct TALER_DepositRequestPS
    * to the customer for each transaction.  Note that different coins
    * that are part of the same transaction can use the same
    * transaction ID.  The transaction ID is useful for later disputes,
-   * and the merchant's contract offer (@e h_contract) with the
+   * and the merchant's contract offer (@e h_proposal_data) with the
    * customer should include the offer's term and transaction ID
    * signed with a key from the merchant.
    */
@@ -356,7 +356,7 @@ struct TALER_DepositConfirmationPS
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract GNUNET_PACKED;
+  struct GNUNET_HashCode h_proposal_data GNUNET_PACKED;
 
   /**
    * Hash over the wiring information of the merchant.
@@ -417,9 +417,10 @@ struct TALER_RefundRequestPS
   struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
 
   /**
-   * Hash over the contract which is being refunded.
+   * Hash over the proposal data to identify the contract
+   * which is being refunded.
    */
-  struct GNUNET_HashCode h_contract GNUNET_PACKED;
+  struct GNUNET_HashCode h_proposal_data GNUNET_PACKED;
 
   /**
    * Merchant-generated transaction ID of the orginal transaction.
@@ -475,9 +476,10 @@ struct TALER_RefundConfirmationPS
   struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
 
   /**
-   * Hash over the contract which is being refunded.
+   * Hash over the proposal data to identify the contract
+   * which is being refunded.
    */
-  struct GNUNET_HashCode h_contract GNUNET_PACKED;
+  struct GNUNET_HashCode h_proposal_data GNUNET_PACKED;
 
   /**
    * Merchant-generated transaction ID of the orginal transaction.
@@ -917,9 +919,9 @@ struct TALER_DepositTrackPS
   struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
 
   /**
-   * Hash over the contract for which this deposit is made.
+   * Hash over the proposal data of the contract for which this deposit is 
made.
    */
-  struct GNUNET_HashCode h_contract GNUNET_PACKED;
+  struct GNUNET_HashCode h_proposal_data GNUNET_PACKED;
 
   /**
    * Hash over the wiring information of the merchant.
@@ -928,13 +930,9 @@ struct TALER_DepositTrackPS
 
   /**
    * Merchant-generated transaction ID to detect duplicate
-   * transactions.  The merchant must communicate a merchant-unique ID
-   * to the customer for each transaction.  Note that different coins
-   * that are part of the same transaction can use the same
-   * transaction ID.  The transaction ID is useful for later disputes,
-   * and the merchant's contract offer (@e h_contract) with the
-   * customer should include the offer's term and transaction ID
-   * signed with a key from the merchant.
+   * transactions.  Chosen by the merchant and used to group
+   * deposits when there are multiple payments the same proposal
+   * (typically from different customers).
    */
   uint64_t transaction_id GNUNET_PACKED;
 
@@ -963,7 +961,7 @@ struct TALER_WireDepositDetailP
   /**
    * Hash of the contract
    */
-  struct GNUNET_HashCode h_contract;
+  struct GNUNET_HashCode h_proposal_data;
 
   /**
    * Time when the wire transfer was performed by the exchange.
@@ -1087,7 +1085,7 @@ struct TALER_ConfirmWirePS
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract GNUNET_PACKED;
+  struct GNUNET_HashCode h_proposal_data GNUNET_PACKED;
 
   /**
    * Raw value (binary encoding) of the wire transfer subject.
@@ -1106,7 +1104,7 @@ struct TALER_ConfirmWirePS
    * merchant-unique ID to the customer for each transaction.  Note
    * that different coins that are part of the same transaction can
    * use the same transaction ID.  The transaction ID is useful for
-   * later disputes, and the merchant's contract offer (@e h_contract)
+   * later disputes, and the merchant's contract offer (@e h_proposal_data)
    * with the customer should include the offer's term and transaction
    * ID signed with a key from the merchant.
    */

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]